美文网首页
5. 最长回文子串

5. 最长回文子串

作者: bangbang2 | 来源:发表于2020-08-05 14:22 被阅读0次
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++;
        }

    }

}

相关文章

网友评论

      本文标题:5. 最长回文子串

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