leetcode--最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。


示例 1:

输入:s = "babad"

输出:"bab"

解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"

输出:"bb"

示例 3:

输入:s = "a"

输出:"a"

示例 4:

输入:s = "ac"

输出:"a"

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/longest-palindromic-substring

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


解题代码:

public StringlongestPalindrome(String s) {

if (s ==null | s.isEmpty()) {

return "";

        }

String maxStr = s.charAt(0) +"";

        for (int i=0; i < s.length(); i++) {

int head = i;

            int tail = i;

//            if (maxStr.length() >= s.length() - tail) {

//                break;

//            }

            String str = cacluateString(s, head, tail);

            if (((tail +1) < s.length()) && (s.charAt(head) == s.charAt(tail +1))) {

tail = i +1;

                String str2 = cacluateString(s, head, tail);

                if (str2.length() > str.length()) {

str = str2;

                }

}

if (str.length() > maxStr.length()) {

maxStr = str;

            }

}

return maxStr;

    }

private StringcacluateString(String s, int head, int tail) {

while (head >=1 && tail < s.length() -1) {

if (s.charAt(head -1) == s.charAt(tail +1)) {

head--;

                tail++;

            }else {

break;

            }

}

return s.substring(head, tail+1);

    }

你可能感兴趣的:(leetcode--最长回文子串)