簡體   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