最长回文字符串Longest Palindrome

特点:

具有很好的对称

思路:

寻找最长回文字符串:通过双指针从中间向两边扩展

判断最长回文字符串:通过双指针从两边向中间收缩

注意点:

  • 回文字符串总字符个数或奇或偶,因此需要分两种情况处理
  1. 奇数时:起始时两个指针位于处在中心位置的字符处

  2. 偶数时:起始时两个指针分别位于处在中心位置两侧的字符处


leetcode 5. 最长回文子串

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);
    }
};
posted @ 2021-06-09 09:13  niu_a  阅读(64)  评论(0编辑  收藏  举报