最長迴文子串
給出一個字符串(假設長度最長爲1000),求出它的最長迴文子串,你可以假定只有一個滿足條件的最長迴文串。
給出字符串 "abcdzdcab"
,它的最長迴文子串爲 "cdzdc"
。
class Solution {
public:
/*
* @param s: input string
* @return: the longest palindromic substring
*/
string longestPalindrome(string &s) {
// write your code here
int dp[s.size()][s.size()]={0},left=0,right=0,len=0;
for(int i=0;i<s.size();i++)//i從下標0開始
{
for(int j=0;j<=i;j++)//j最大可以等於j,相當於單個字母
{
dp[j][i]=(s[j]==s[i])&&((i-j<2)||(dp[j+1][i-1]));//動態規劃,這裏下標可能會小於0,可能有隱患
if(dp[j][i]&&(i-j+1>len))//這裏和目前最大長度比較
{
len=i-j+1;
left=j;
right=i;
}
}
}
return s.substr(left,len);
}
};