我需要从两个DNA字符串中找到最长的公共子字符串。
我有第一个字符串“ CGATAC”,第二个是“ GACAGTC”
使用我的代码,我的结果是:“ GAC”,但是您可以获得更长的子字符串,我的意思是“ GATC”。我需要更改以获得更长的子字符串?
int k = 0;
for (int i = 0; i < substring1.length(); i++) {
char znak = substring1[i];
for (int j = k; j < substring2.length(); j++) {
char znak2 = substring2[j];
if (znak == znak2) {
end_substring += znak;
k = j;
break;
}
}
}
cout << end_substring;
最佳答案
您可以通过一些基本思路来改进代码。我知道您需要最长的字符串之一,而不是全部的字符串,那么您可以存储最长的字符串的长度,直到程序中的每个时刻为止,并将此长度用于搜索字符串,长度至少为length + 1。但是bes解决方案是使用动态porgramming,您可以在此处阅读此解决方案:https://www.geeksforgeeks.org/longest-common-substring-dp-29/