最長回文子串

2021-10-07 04:00:05 字數 1129 閱讀 5863

暴力解法

使用二重迴圈判斷所有字串是否為回文字串,超時。

class solution 

int maxlen = integer.min_value;

string maxpalindrome = "";

for(int i = 0; i < s.length(); i++)} }

}return maxpalindrome;

}public boolean ispalindrome(string str)

}

動態規劃dp[i][j] 表示子串 s[i..j] 是否為回文子串,這裡子串 s[i..j] 定義為左閉右閉區間,可以取到 s[i] 和 s[j]

dp[i][j] = (s[i] == s[j]) and dp[i + 1][j - 1]

表示式 [i + 1, j - 1] 長度嚴格小於 2,j - 1 - (i + 1) + 1 < 2 ,即j - i < 3。在s[i] == s[j]成立和j - i < 3的前提下,直接可以下結論,dp[i][j] = true,否則才執行狀態轉移。

dp[i][i] = true

public class solution 

int len = s.length();

boolean dp = new boolean[len][len];

for(int i = 0; i < s.length(); i++)

int begin = 0;

int maxlen = 1;//注意初始值

for(int j = 1; j < len; j++)elseelse

} if(dp[i][j] && j - i + 1 > maxlen) }}

return s.substring(begin,begin + maxlen);}}

最長回文子串 最長回文子串行

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,且佔據單獨一行,輸出最長的回文子串 如有多個,輸出,起始位置最...