Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
这个题的关键还是在运行时间,回文字符串的判断需要逐个对比对称位置的字符是否一样,在循环中尽可能地减小字符运算,能够缩短运行时间。另外,回文字符的匹配需要分成种情况,aba和abba,所以也要分开检测,总之,要尽量缩短运行时间才能通过检测。
class Solution {
public:
string longestPalindrome(string s) {
string max,tmp;
int k=1;
int i=s.size()/2;
int n=1;
int left,right;
if(s.size()==1){
return s;
}
for(i=0;i<s.size();i++){
//奇数回文
left=i-1;
right=i+1;
while(left>=0 && right<s.size()){
if(s[left]!=s[right])
break;
left--;
right++;
}
left++;
right--;
tmp=s.substr(left,right-left+1);
if(tmp.size()>=max.size()){
max=tmp;
}
//偶数回文
left=i;
right=i+1;
while(left>=0 && right<s.size()){
if(s[left]!=s[right])
break;
left--;
right++;
}
left++;
right--;
tmp=s.substr(left,right-left+1);
if(tmp.size()>=max.size()){
max=tmp;
}
}
return max;
}
};