美文网首页Leedcode
5. Longest Palindromic Substring

5. Longest Palindromic Substring

作者: 凉拌姨妈好吃 | 来源:发表于2018-06-04 11:57 被阅读0次
    image.png

    思路:有两种情况,一种情况是回文串为abba,另一种情况是回文串为aba。让右指针与自己的下一位比较,如果相等,就是第一种情况,那么我们就将右指针往后移一位。如果不相等,我们再比较右指针与左指针,如果相等,左指针向前移动,右指针向后移动。

    class Solution {
    public:
        string longestPalindrome(string s) {
            
            if (s.size() < 2)
                return s;
            int left,right,maxlen = 0,maxleft=0;
            for(int i=0;i<s.size()&&(s.size()-i>maxlen/2);)
            {
                left=right=i;
                //如果右指针与它下一位相等,那么右指针往后移动。
                while(right<s.size()-1&&s[right]==s[right+1])
                    ++right;
                i = right+1;
                while(right<s.size()-1&& left > 0&&s[left-1]==s[right+1])
                {
                    --left;
                    ++right;
                }
                if(maxlen<right-left+1)
                {
                    maxleft =left;
                    maxlen = right-left+1;
                }
                        
            }
            return s.substr(maxleft,maxlen);
        }      
    };
    

    相关文章

      网友评论

        本文标题:5. Longest Palindromic Substring

        本文链接:https://www.haomeiwen.com/subject/pvpesftx.html