LeetCode打卡day17

最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: “babad” 输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd” 输出: “bb”

解法一:我自己原来用的暴力解法,但是超时了。

class Solution {
        public boolean isPalindrome (String s){
        int len=s.length();
        for(int i=0;i<len/2;i++){
            if(s.charAt(i)!=s.charAt(len-i-1)){
                return false;
            }
        }
        return true;
        }
        public String longestPalindrome(String s) {
            String res="";
            int max=0;
            int len=s.length();
            for(int i=0;i<len;i++)
                for(int j=i+1;j<=len;j++){
                    String test=s.substring(i,j);
                    if(isPalindrome(test)&&test.length()>max){
                        max=test.length();
                        res=s.substring(i,j);
                    }
                }
            return res;
    }
}

解法二:看题解中用到的中心扩散法。

public String longestPalindrome1(String s) {

        if (s == null || s.length() == 0) {
            return "";
        }
        int strLen = s.length();
        int left = 0;
        int right = 0;
        int len = 1;
        int maxStart = 0;
        int maxLen = 0;

        for (int i = 0; i < strLen; i++) {
            left = i - 1;
            right = i + 1;
            while (left >= 0 && s.charAt(left) == s.charAt(i)) {
                len++;
                left--;
            }
            while (right < strLen && s.charAt(right) == s.charAt(i)) {
                len++;
                right++;
            }
            while (left >= 0 && right < strLen && s.charAt(right) == s.charAt(left)) {
                len = len + 2;
                left--;
                right++;
            }
            if (len > maxLen) {
                maxLen = len;
                maxStart = left;
            }
            len = 1;
        }
        return s.substring(maxStart + 1, maxStart + maxLen + 1);

    }

作者:reedfan
链接:https://leetcode-cn.com/problems/longest-palindromic-substring/solution/zhong-xin-kuo-san-fa-he-dong-tai-gui-hua-by-reedfa/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
发布了20 篇原创文章 · 获赞 2 · 访问量 276

猜你喜欢

转载自blog.csdn.net/weixin_46442834/article/details/104925313