5. 最长回文子串

2020-08-05  本文已影响0人  bangbang2
image.png

如下图是解题思路
1:首先区分构成回文子串的两种情况:
(1):回文子串为基数个,有中心元素,例如:aba
(2):回文子串有偶数个,无中心元素,例如:abba
2:利用helper函数,来判断left和right是否越界,且对应的字符是否一致
3:遍历目标字符串,调用函数:
helper(i-1,i+1,s);
helper(i,i+1,s);
来求出回文子串


image.png
class Solution {
    int maxLength=1;//记录回文子串的最大长度
    int start=0;//记录回文子串的起始
    public String longestPalindrome(String s) {
        if(s.length()<2) return s;
        for(int i=0;i<s.length();i++){
            helper(i-1,i+1,s);
            helper(i,i+1,s);
        }
        return s.substring(start,start+maxLength);
            }
    void helper(int left,int right,String s){
        while(left>=0&&left<=right&&right<s.length()&&s.charAt(left)==s.charAt(right)){//对边界值进行判断
            if((right-left+1)>maxLength){
                maxLength=right-left+1;//更新回文子串的最大长度
                start=left;
            }
            left--;
            right++;
        }

    }

}
上一篇 下一篇

猜你喜欢

热点阅读