繁体   English   中英

求最长公共 Substring

[英]Find Longest common Substring

我需要从两个 DNA 字符串中找到最长的常见 substring。 我有第一个字符串“CGATAC”,第二个:“GACAGTC”使用我的代码,我的结果是:“GAC”,但你可以得到更长的 substring,我的意思是“GATC”。 我需要改变什么来获得更长的 substring?

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 的搜索字符串。 但是 bes 解决方案是使用动态编程,您可以在此处阅读此解决方案: https://www.geeksforgeeks.org/longest-common-substring-dp-29/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM