5. Longest Palindromic Substring | Java最短代码实现

原题链接: 5. Longest Palindromic Substring

【思路】

本题考查回文字符串。求最长回文子串无非两种情况:

1.以该字符为对称轴,同时向左、向右两个方向进行判断

2.以两字符串中间的空隙为中轴线,同时向左、向右进行判断

顺序遍历字符串就可以得到结果:

    public String longestPalindrome(String s) {
        String result = "";
        for (int i = 0; i < s.length(); i++) {
            String temp = lengthOfPalindromic(s, i, i);
            result = result.length() >= temp.length() ? result : temp;
            temp = lengthOfPalindromic(s, i, i + 1);
            result = result.length() >= temp.length() ? result : temp;
        }
        return result;
    }
    private String lengthOfPalindromic(String s, int left, int right) {
        if (left < 0 || right >= s.length() || s.charAt(left) != s.charAt(right))
            return s.substring(left + 1, right);
        return lengthOfPalindromic(s, left - 1, right + 1);
    }
88 / 88  test cases passed. Runtime: 49 ms  Your runtime beats 38.25% of javasubmissions.
欢迎优化!

你可能感兴趣的:(java,LeetCode,String)