求兩個字串的最長公共子串(華科軟院複試上機題目)

2021-09-11 18:18:34 字數 956 閱讀 2866

問題描述:給定任意倆組字串s1和s2,請程式設計輸出他們間的最大相同子串。例如:s1=12abc78,s2=7bc2,則輸出為:bc (字串陣列)

方法一:a、把兩個字串分別以行和列組成乙個二維矩陣

b、比較二維矩陣中每個點對應行列字元中否相等,相等的話值設定為1,否則設定為0

c、通過查詢出值為1的最長對角線就能找到最長公共子串。

**如下

#include#include#define max 50

int main()

; //定義乙個二維陣列,初始化為0

int maxlen=0; //maxlen用來儲存對角線的長度

int maxend; //maxend為

int m,n;

//輸入兩個字串

gets(str1);

gets(str2);

for(int i=0;str1[i]!='\0';i++) }

//依次找對角線最大連續1的個數

for(int q=0;str1[q]!='\0';q++)

}} for(int k=maxend-maxlen+1;k<=maxend;k++)

printf("%c",str1[k]);

printf("\n");

return 0;

}

方法二:通過兩重迴圈來找最長子串

#include#define n 100

void main()

else

}} len=0; //比較完一輪後令len為0,重新開始下一輪的比較

} for(i=start;iprintf("\n");

}

求兩個字串的最長公共子串

問題 有兩個字串str和str2,求出兩個字串中最長公共子串長度。比如 str acbcbcef,str2 abcbced,則str和str2的最長公共子串為bcbce,最長公共子串長度為5。演算法思路 1 把兩個字串分別以行和列組成乙個二維矩陣。2 比較二維矩陣中每個點對應行列字元中否相等,相等的...

求兩個字串的最長公共子串

def longestcommonsequence str one,str two,case sensitive true str one 和 str two 的最長公共子串行 param str one 字串1 param str two 字串2 正確結果 param case sensitive...

求兩個字串的最長公共子串

採用乙個二維矩陣來記錄中間結果,矩陣的橫座標為字串1的各個字元,矩陣的縱座標為字串2的各個字元。舉例說明 假設兩個字串分別為 bab 和 caba 當然我們現在一眼就可以看出來最長公共子串是 ba 或 ab b a b c 0 0 0 a 0 1 0 b 1 0 1 a 0 1 0 可以看出,矩陣的...