[LeetCode]中级算法-最长回文子串

 最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba"也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

目前能想到的就是暴力解法,双层for循环,依次以每一个字符作为子串的起始处,判断每一个可能的子串是否为回文子串

class Solution {
     public String longestPalindrome(String s) {

        if(s.length()<=1){
            return s;
        }

        int len=s.length();
        int maxLength=0;
        int startIndex=0;
        int endIndex=0;
        
        
        for (int i = 0; i < len; i++) {
            for (int j = i+1; j <len ; j++) {
                
                //当首尾字符相同时,进入回文子串判断程序
                if(s.charAt(i)==s.charAt(j)){
                    int temp=j-i+1;
                    if(temp>maxLength) {
                        boolean flag = true;
                        for (int k = 0; k <= (j-i) / 2; k++) {
                            if (s.charAt(k + i) != s.charAt(j - k)) {
                                flag = false;
                            }
                        }
                        
                        if(flag){
                            startIndex=i;
                            endIndex=j;
                            maxLength=temp;
                        }
                    }
                }
            }
        }
        s=s.substring(startIndex,endIndex+1);
        return s;
    }
}

猜你喜欢

转载自blog.csdn.net/AntioniaMao/article/details/81478053