最長回文子串

2021-08-25 22:28:07 字數 632 閱讀 6934

問題描述:給定乙個字串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,且佔據單獨一行,輸出最長的回文子串 如有多個,輸出,起始位置最...