给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。
样例
样例 1:
输入:"abcdzdcab"
输出:"cdzdc"
样例 2:
输入:"aba"
输出:"aba"
挑战
O(n2) 时间复杂度的算法是可以接受的,如果你能用 O(n) 的算法那自然更好。
class Solution {
public:
/**
* @param s: input string
* @return: the longest palindromic substring
*/
string longestPalindrome(string &s) {
// write your code here
string res="";
for (int i = 0; i < s.size(); i++) {
string tmp="";
int l=i;
int r=i;
for(;l>=0&&r<s.size();l--,r++)//从中心出发,回文子串长度为奇数处理
{
if(s[l]!=s[r]) break;
}
for (int j = l+1; j < r; j++) {
/* code */
tmp+=s[j];
}
if(res.size()<tmp.size()) res=tmp;
tmp="";
l=i;
r=i+1;
for(;l>=0&&r<s.size();l--,r++)//从中心出发,回文子串长度为偶数处理
{
if(s[l]!=s[r]) break;
}
for (int j = l+1; j < r; j++) {
/* code */
tmp+=s[j];
}
if(res.size()<tmp.size()) res=tmp;
}
return res;
}
};