查找最长的公共子串

时间:2019-10-09 17:58:59

标签: c++

我需要从两个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;

1 个答案:

答案 0 :(得分:-1)

您可以通过一些基本思路来改进代码。我了解您要一个最长的字符串,而不是全部,然后您可以存储最长的字符串的长度,直到程序中的每一个时刻为止,并使用此长度作为长度至少为+1的搜索字符串。但是bes解决方案是使用动态porgramming,您可以在此处阅读此解决方案:https://www.geeksforgeeks.org/longest-common-substring-dp-29/

相关问题