您的位置:首页 > 其它

Longest Palindromic Substring

2015-09-23 17:54 253 查看


题意:求一个字符串s的最长回文子串。

思路:dp[i][j]表示s[i,j]是否为回文字符子串(true or false)

            则有状态转移方程:dp[i][j]=true,if  dp[i+1][j-1]==true&&s[i+1]==s[j-1]

class Solution {
public:
string longestPalindrome(string s) {
int n=s.length();
if(n==1)
return s;
int i,j;
int maxlen,pos;
bool dp[1000][1000];

for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(i==j)
dp[i][j]=true;
else
dp[i][j]=false;
for(i=2;i<=n;i++)//控制步长
for(j=0;j<=n-i;j++)
{
if(i==2&&s[j]==s[j+1]||dp[j+1][j+i-2]&&s[j]==s[j+i-1])
{
dp[j][j+i-1]=true;
maxlen=i;
pos=j;
}
}
string ans="";
for(i=pos;i<pos+maxlen;i++)
ans+=s[i];
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: