最長公共子串(動態規劃)

2021-08-08 14:42:11 字數 797 閱讀 1713

描述:

計算兩個字串的最大公共子串(longest common substring)的長度,字元不區分大小寫。

輸入:

輸入兩個字串

輸出:

輸出乙個整數

樣例輸入:

asdfas werasdfaswer
樣例輸出:6

參考**:

這裡的最大公共字串要求的字串是連續的。

求字串的方法和求子序列方法類似:

當s[i] == t[j]時,子串行長度f[i][j] = f[i - 1][j - 1] + 1;只是當str1[i] != str2[j]時,f[i][j]長度要為0,而不是max。

#include#include#include#define maxn 200

using namespace std;

int f[maxn+10][maxn+10];

string s,t;

int main()

for(i=0;iif(t[i]>='a'&&t[i]<='z') t[i]=tolower(t[i]);

}for(i=1;i<=ls;i++)

{ for(j=1;j<=lt;j++)

{ if(s[i-1]==t[j-1])

{f[i][j]=f[i-1][j-1]+1;

if(maxn

最長公共子串 最長公共子串 動態規劃

有兩個字串 可能包含空格 請找出其中最長的公共連續子串,輸出其長度。長度在1000以內 例如 輸入 abcde bcd 輸出 3 1 把兩個字串分別以行和列組成乙個二維矩陣。2 比較二維矩陣中每個點對應行列字元中否相等,相等的話值設定為1,否則設定為0。3 通過查詢出值為1的最長對角線就能找到最長公...

最長公共子串 動態規劃

題目 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為1000。示例 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。思想 動態規劃 步驟 第一步 確定子問題。在這一步重點是分析那些變數是隨著問題規模的變小而變小的,那些變數與問題的規模無關。第二步 確定狀態...

最長公共子串(動態規劃)

include include using namespace std 最長公共子串問題 動態規劃 dp i j 表示在必須將str1 i 1 和str2 j 1 作為公共子串最後乙個字元的情況下,公共子串最大長度 dp i j 取決於dp i 1 j dp i j 1 dp i 1 j 1 時間複...