找出兩個字串的最大公共子串

2021-07-06 03:01:33 字數 490 閱讀 6472

找出兩個字串的最大公共子串。(如:abcdefg和abdefg的最大公共子串是defg)

有人給出以下兩種思路:

1.以兩個字串c1c2為行列構成矩陣a,相同a[i][j]為1…最大就是斜方向連續1最多的(另一網友建議:如果2個字串都很長 那個矩陣占用空間太大了啊,那個矩陣是一般來說是稀疏矩陣 考慮用稀疏矩陣的一些儲存方式吧)

2.兩個字串c1c2,從大到小在c1中取子串,和c2匹配

3.資料結構 的kmp演算法

這裡先貼一下我按照第二個思路寫的**(這裡仍然可以繼續優化,比如遍歷兩個初始字串中較短的那個):

public

class maxsamestr

public

static string getmaxsamestr(string str1,string str2)

}return maxsamestr;

}}

這裡有篇文章講的很詳細:

從兩個字串中找出最大公共子字串

從兩個字串 str 1,str 2 中找出最大公共子字串 comstring 的方法為 選取長度較短的字串 假設str 1較短 做擷取 從字串中擷取長度為1的子字串 每個子字串都在str 2中做查詢,查詢到則將該字串賦予comstring 從字串中擷取長度為2的子字串,重複3 從字串中擷取長度為n的...

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

求兩個串中的第乙個最長子串。如 abractyeyt dgdsaeactyey 的最大子串為 actyet 有乙個演算法很巧妙 把字串1 長度m 橫排,串2 長度n 豎排,得到乙個m n的矩陣c,矩陣的每個元素的值如下,如果m i n j 則c j i 1,否則,c j i 0。然後找出矩陣中連續是...

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

求兩個字串的最大公共子串 演算法原理 lcs i,j 0 i 0 j 0 lcs i 1,j 1 i 0 b 0 str1 i str2 j 1 構造乙個str1.size str2.size 的矩陣vec 2 如果 str1 i str2 j 則vec i j vec i 1 j 1 1 lcs ...