重複子串問題(四) 求兩個字串的最長公共字串

2021-07-04 10:52:10 字數 762 閱讀 5586

將兩個字串中較短的字串進行分解,分解為不同長度的子串,並儲存在set 容器中,這樣既可取出相同子串,同時也可以將子串排序,方便查詢。利用string類自帶的find函式查詢重複子串。

#include

#include

#include

#include

using

namespace

std;

int lcs(string sa,string sb)

else

for(string::size_type i=0;ifor(string::size_type j=2;j<=s2.size()-i;j++)//子串長度

for(set

::iterator it=suff.begin();it!=suff.end();++it)}}

cout

}int main()

//最長公共子串

int com_suffix(char *p,char *q)

while(*q)

}while(*p)

}if(count==1)

return len;

return0;}

int lcs(char *x,char *y)

}printf("%.*s\n",maxlen,suff[maxindex]);

delete arr;

return maxlen;

}int main()

求兩個字串的距離

給定兩個長度相等的,由小寫字母組成的字串s1和s2,定義s1和s2的距離為兩個字串有多少個位置上的字母不相等。現在牛牛可以選定兩個字母x1和x2,將s1中的所有字母x1均替換成x2。x1和x2可以相同 牛牛希望知道執行一次替換之後,兩個字串的距離最少為多少。x1和x2是自己求的,未知 輸入 aaa ...

使用SQL求兩個字串相同的子串

求兩個字串之間相同的子串,例如 abcefg 和 dxefefg 那麼相同的子串有 e ef efg f fg g 等字串。使用如下sql來實現 主要是取全排列的方法,我使用了 例如str2是 abc 首先根據長度構造出結果集a,a有三行,值分別是1,2,3,然後a和b做笛卡爾乘積並且去掉a b的情...

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

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