問題描述:給定乙個字串s,找出它的最長回文子串。
input: "babad"
output: "bab"
note: "aba" is also a valid answer.
input: "cbbd"
output: "bb"
思路:可以採用動態規劃思想,定義dp[i][j]為
dp[i][j]= true (如果子串 si…sj 是乙個回文串)
= false(如果子串 si…sj 不是乙個回文串)
於是可得dp[ i ] [ j ] = (dp[ i+1 ][ j-1 ] && s[ i ]==s[ j ]),即如果si+1…sj-1是乙個回文串且 s[ i ]==s[ j ],那麼si…sj 是乙個回文串。dp陣列的初始值為:
dp(i,i)=true
dp(i,i+1)=true if (si==si+1)
c++語言**如下:
bool dp[s.length()][s.length()]=;
for(int i=0;i0;--i)
}} int maxlength=0;
for(int i=0;i} return maxlength;
最長回文子串 最長回文子串行
1.最長回文子串行 可以不連續 include include include include using namespace std 遞迴方法,求解最長回文子串行 intlps char str,int i,int j intmain include include include using n...
最長回文子串
描述 輸入乙個字串,求出其中最長的回文子串。子串的含義是 在原串連續出現的字串片段。回文的含義是 正著看和倒著看是相同的,如abba和abbebba。在判斷是要求忽略所有的標點和空格,且忽略大小寫,但輸出時按原樣輸出 首尾不要輸出多餘的字串 輸入字串長度大於等於1小於等於5000,且單獨佔一行 如果...
最長回文子串
輸入乙個字元,求出其中最長的回文子串。子串的含義是 在元串中連續出現的字串片段。回文的含義是 正看和倒看相同,如abba和yyxyy,在判斷時候應該忽略所有的空格和標點符號,且忽略大小寫,但輸出應該保持原樣,輸入的字元長度不超過5000,且佔據單獨一行,輸出最長的回文子串 如有多個,輸出,起始位置最...