演算法期中 最長公共子串

2021-08-13 03:09:40 字數 926 閱讀 1695

description

給定兩個字串x = x­1x­2…x­ny = y­1y­2…ym, 請找出xy的最長公共子串的長度,也就是求出乙個最大的k,使得存在下標ijx­ix­i+1…x­i+k-1 = yjy­j+1…y­j+k-1.

xy只含有小寫字母,長度均在1和1000之間.

請為下面的solution類實現解決上述問題的函式longestsubstring,函式的引數x和y為給出的兩個單詞,返回值為最長公共子串的長度.

class solution 

};

例1:x = 「abcd」, y = 「cdef」,返回值為2.

例2:x = 「abcabc」, y = 「xyz」,返回值為0.

例3:x = 「introduction」, y = 「introductive」,返回值為10.

這道題使用動態規劃解決

動態規劃方程為

f(i,j)表示表示字串xy分別以ij為結尾的最長公共子字串的長度。 f(

i,j)

=

class solution 

vector

dp(n + 1);

int result = 0;

for (int i = m - 1; i > -1; i--)

}return result;

}};

字串中最長公共子串行和最長公共子串

例 bdcaba和abcbdab,最長公共子串行為 bcba。dp解法 字串1的長度為length1,字串2的長度為length2,建立乙個二維陣列c length1 length2 用來記錄最長公共子串行的長度,狀態轉移方程為 整個狀態轉移以及二維陣列矩陣c為 生成字串長度加1的0矩陣,m用來儲存...

最長公共子串行 最長公共子串

1 最長公共子串行 採用動態規劃的思想,用乙個陣列dp i j 記錄a字串中i 1位置到b字串中j 1位置的最長公共子串行,若a i 1 b j 1 那麼dp i j dp i 1 j 1 1,若不相同,那麼dp i j 就是dp i 1 j 和dp i j 1 中的較大者。class lcs el...

最長公共子串行 最長公共子串

1.區別 找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。而最長公共子串行則並不要求連續。2 最長公共子串 其實這是乙個序貫決策問題,可以用動態規劃來求解。我們採用乙個二維矩陣來記錄中間的結果。這個二維矩陣怎麼構造呢?直接舉個例子吧 bab 和 caba 當然我們現在一眼就可以看出來最長公...