- 题目描述
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
- c++代码
string longestPalindrome(string s) {
int l=s.length(),maxl=0,st=0;
int **p=new int*[l];
for(int i=0;i<l;i++) p[i]=new int[l];
for(int i=l-1;i>-1;i--)
{
p[i][i]=1;
if(i<l-1) p[i][i+1]=(s[i]==s[i+1]);
for(int j=i;j<l;j++)
{
if(p[i][j])
{
st=(j-i+1)>maxl? i:st;
maxl=max(maxl,j-i+1);
}
if(j==l-1) break;
else if(i==0) continue;
else p[i-1][j+1]=(p[i][j]&(s[i-1]==s[j+1]));
}
}
return s.substr(st,maxl);
}
时间复杂度 O(n^2)
题目链接
https://leetcode-cn.com/problems/longest-palindromic-substring/