最長公共子串問題

2021-08-11 03:25:44 字數 451 閱讀 9984

給定兩個字串str1和str2,返回兩個字串的最長公共子串。要求時間複雜度為o(m*n),額外空間複雜度為o(1)的方法。

一開始想用kmp演算法解決此題,但是眾所周知kmp演算法需要next陣列,那麼空間複雜度肯定是o(n)了。後來想到了遞迴的方法。剛好滿足題目的要求。

public

string thelongest(string str1,string str2)

}return fresult;

}public

string cycle(string str1,string str2,int i,int j,string result)

if(str1.charat(i) == str2.charat(j))else

return cycle(str1, str2, i, j,result);

}

最長公共子串問題

給出兩個字串,求這兩個字串的公共子串。還有乙個類似的問題是兩字串的公共子串行,有待分析 例子 input abcdefg gdefacd output def使用動態規劃法,相當於用空間換時間。將乙個複雜的大問題,分解為較為簡單的子問題,最重要的步驟就是推導狀態轉移公式。現有兩個字串,x x1,x2...

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

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 當然我們現在一眼就可以看出來最長公...