给你一个字符串 s
,找到 s
中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd" 输出:"bb"
提示:
1 <= s.length <= 1000
s
仅由数字和英文字母组成class Solution { public: string longestPalindrome(string s) { int start = 0; int length = 0; int dp[s.length()][s.length()]; for (int c = 0; c < s.length(); c++) { for (int r = 0; r + c < s.length(); r++) { if(c==0){ dp[r][c] = 1; }else if(c==1){ if(s[r] == s[r+c]){ dp[r][c] = 1; start = r; length = 1; }else{ dp[r][c] = 0; } }else{ if(s[r] == s[r+c] && dp[r+1][c-2]==1){ dp[r][c] = 1; start = r; length = c; }else{ dp[r][c] = 0; } } } } return s.substr(start, length+1); } };
152 ms 54.61%
11.4 MB 65.62%