Skip to content
On this page

5.最长回文子串

题目描述

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

示例 1:

输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd" 输出:"bb"

思路分析

  • 遍历数组,以arr[i]或者arr[i]和arr[i + 1]为中心,往两边扩散,获取回文串,再不断比较结果,取长度最长者。

AC 代码

class Solution {
    public String longestPalindrome(String s) {
        String ans = "";
        for(int i = 0; i < s.length(); i++){
            String str1 = substr(s, i, i);
            String str2 = substr(s, i, i+1);
            ans = str1.length() > ans.length() ? str1 : ans;
            ans = str2.length() > ans.length() ? str2 : ans;
        }
        return ans;
    }
    public String substr(String s, int i, int j){
        while(i >= 0 && j < s.length() && s.charAt(i) == s.charAt(j)){
            i--;
            j++;
        }
        // 结束循环时,i和j都已经多挪了一位,一位substring是左闭右开,所以i需要+1归位
        return s.substring(i + 1, j);
    }
}```