最长回文字符串Longest Palindrome
特点:
具有很好的对称性
思路:
寻找最长回文字符串:通过双指针从中间向两边扩展
判断最长回文字符串:通过双指针从两边向中间收缩
注意点:
- 回文字符串总字符个数或奇或偶,因此需要分两种情况处理
-
奇数时:起始时两个指针均位于处在中心位置的字符处
-
偶数时:起始时两个指针分别位于处在中心位置两侧的字符处
class Solution {
public:
string longestPalindrome(string s) {
string res="";
for(int i=0;i<s.size();i++){
string s1=palindorme(s,i,i);//奇数的情况
string s2=palindorme(s,i,i+1);//偶数的情况
res=res.size()>s1.size()?res:s1;
res=res.size()>s2.size()?res:s2;
}
return res;
}
string palindorme(string s,int l,int r){
while((l>=0)&&(r<s.size())&&(s[l]==s[r])){
l--;
r++;
}
return s.substr(l+1,r-l-1);
}
};