5. 最长回文子串

  算法   2分钟   759浏览   0评论

代码

package com.zou.d1116;

/**
 * @author: 邹祥发
 * @date: 2021/11/16 14:19
 * <p>
 * 5. 最长回文子串
 * <p>
 * 给你一个字符串 s,找到 s 中最长的回文子串。
 * <p>
 * 输入:s = "babad"
 * 输出:"bab"
 * 解释:"aba" 同样是符合题意的答案。
 * <p>
 * 输入:s = "cbbd"
 * 输出:"bb"
 * <p>
 * 输入:s = "a"
 * 输出:"a"
 * <p>
 * 输入:s = "ac"
 * 输出:"a"
 */
public class LongestPalindromeSubstring {
    public static void main(String[] args) {
        String s = "babad";
        System.out.println(longestPalindrome(s));
    }

    public static String longestPalindrome(String s) {
        // babad 求最长公共子串
        int len = s.length();
        String result = "";

        for (int i = 0; i < len * 2 - 1; i++) {
            int left = i / 2;
            int right = left + i % 2;
            while (left >= 0 && right < len && s.charAt(left) == s.charAt(right)) {
                String tmp = s.substring(left, right + 1);
                if (tmp.length() > result.length()) {
                    result = tmp;
                }
                left--;
                right++;
            }
        }
        return result;
    }
}

结果

如果你觉得文章对你有帮助,那就请作者喝杯咖啡吧☕
微信
支付宝
  0 条评论