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