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

5. 最长回文子串

作者: Andysys | 来源:发表于2019-12-29 00:21 被阅读0次
        // 中心扩展算法
        public String longestPalindrome(String s) {
            if (s == null || s.length() == 0) {
                return "";
            }
            int start = 0, end = 0;
            int len = 0;
            for (int i = 0; i < s.length(); i++) {
                int len1 = expandAroundCenter(s, i, i);
                int len2 = expandAroundCenter(s, i, i + 1);
                len = Math.max(len1, len2);
                if (len > (end - start + 1)) {
                    start = i - (len - 1) / 2;
                    end = i + len / 2;
                }
            }
            return s.substring(start, end + 1);
        }
    
        private int expandAroundCenter(String s, int left, int right) {
            int L = left, R = right;
            while (L >= 0 && R < s.length() && s.charAt(L) == s.charAt(R)) {
                L--;
                R++;
            }
            return R - L - 1;
        }
    

    相关文章

      网友评论

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

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