找出兩個字串的最大公共子串。(如: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 ...