【LeetCode刷题】-C++—中等—5—最长回文子串

题目描述:

【LeetCode刷题】-C++—中等—5—最长回文子串_第1张图片

思路

见代码注释

代码

class Solution {
public:
    string longestPalindrome(string s) {
        //Case1:空的或者只有一个的,就是回文,直接返回
        if(s.size() == 0 || s.size() == 1) 
            return s;
        //Case2:如果只有两个相等的元素,也是回文字符串,直接返回;
        if(s.size() == 2 && s[0] == s[1])
            return s;
        
        //Case3:一般情况
        //--Step1:先初始化变量,
        int start(0), end(0);//start和end记录回文子串的起始位置
        int maxLen(0);//maxLen用来记录回文子串的长度
        //--Step2:遍历寻找,【中心拓展法】
        //--在findSameLength中实现
        for(int i=0; i= 0 && right < s.size() && s.at(left) == s.at(right)){
            left--, right++;
        }
        //然后返回此时子串的长度,因为相等的时候已经移动了一步,所以得到的值多1,因此再减掉1
        return right-left-1;
    }
};

你可能感兴趣的:(LeetCode刷题系列)