题解 | #最长回文子串#

最长回文子串

https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

image-20220717082415287
思路:

  • 初始长度1
  • 以i为中心,向两边扩展
  • 和中心相等情况(abbbc)
  • 左和右相等情况 (cbabc)
    public int getLongestPalindrome (String A) {
        int length=A.length();
        int left=0;
        int right=0;
        // 初始长度1
        int len=1;
        int maxLen=0;
        for(int i=0;i<length;i++){
            // 以i为中心,向两边扩展
            left=i-1;
            right=i+1;
            // 和中心相等情况(abbbc)
            while(left>=0 && A.charAt(left)==A.charAt(i)){
                len++;
                left--;
            }
            while(right<length && A.charAt(right)==A.charAt(i)){
                right++;
                len++;
            }
            // 左和右相等情况 (cbabc)
            while(left>=0 && right<length && A.charAt(left)==A.charAt(right)){
                len+=2;
                left--;
                right++;
            }
            if(len>maxLen){
                maxLen=len;
            }
            len=1;
        }
        return maxLen;
    }
#题解#
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务