leetcode-----5. 最长回文子串

思路:中心扩散法

  长度为奇数的回文子串中心有一个元素;
  长度为偶数的回文子串中心有两个元素;

代码

class Solution {
    public String longestPalindrome(String s) {
        if (s.isEmpty()) {
            return "";
        } 
        int l = 0, r = 0;
        for (int i = 0; i < s.length(); ++i) {
            int l1 = getLen(s, i, i);
            int l2 = getLen(s, i, i + 1);
            int maxLen = Math.max(l1, l2);
            if (maxLen > r - l) {
                l = i - (maxLen - 1) / 2;
                r = i + maxLen / 2;
            }
        }
        return s.substring(l, r + 1);
    }

    public int getLen(String s, int i, int j) {
        while (i>= 0 && j < s.length() && s.charAt(i) == s.charAt(j)) {
            i--;
            j++;
        }
        return j - i - 1;
    }
}
posted @ 2020-06-02 12:52  景云ⁿ  阅读(58)  评论(0编辑  收藏  举报