【leetcode算法从入门到精通】5. 最长回文子串

题目

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

示例 1:

输入:s = "babad"

输出:"bab"

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

示例 2:

输入:s = "cbbd"

输出:"bb"

提示:

1 <= s.length <= 1000

s 仅由数字和英文字母组成

分析

这个问题不太会做,先抄答案吧;

复制代码
class Solution {
    public String longestPalindrome(String s) {
        int len = s.length();
        if (len < 2) {
            return s;
        }
        int maxLen = 1;
        int begin = 0;
        //dp[i][j] 表示s[i..j]是否是回文串
        boolean[][] dp = new boolean[len][len];
        // 初始化:所有长度为1的字串都是回文串
        for (int i = 0; i < len; i++) {
            dp[i][i] = true;
        }
        char[] charArray = s.toCharArray();
        // 递推开始
        // 先枚举字串长度
        for (int L = 2; L <= len; L++) {
            // 枚举左边界,左边界的上限设置可以宽松一些
            for (int i = 0; i < len; i++) {
                // 由L和i可以确定右边界 j-i+1=L 得
                int j = L + i - 1;
                // 如果右边界越界,就可以退出当前循环
                if (j >= len) {
                    break;
                }
                if (charArray[i] != charArray[j]) {
                    dp[i][j] = false;
                } else {
                    if (j - i < 3) {
                        dp[i][j] = true;
                    } else {
                        dp[i][j] = dp[i + 1][j - 1];
                    }
                }
                // 只要dp[i][L]==true 成立,就表示字串s[i..L]是回文,此时记录回文长度和起始位置
                if (dp[i][j] && j - i + 1 > maxLen) {
                    maxLen = j - i + 1;
                    begin = i;
                }
            }
        }
        return s.substring(begin, begin + maxLen);
    }
}
相关推荐
凤年徐16 小时前
优选算法——滑动窗口
c++·算法
DDzqss16 小时前
3.14打卡day35
算法
WHS-_-202216 小时前
mCore: Achieving Sub-millisecond Scheduling for 5G MU-MIMO Systems
java·算法·5g
浅念-16 小时前
C++11 核心知识点整理
开发语言·数据结构·c++·笔记·算法
#空城16 小时前
VSCode搭建LVGL9的模拟器
ide·vscode·编辑器
炽烈小老头16 小时前
【 每天学习一点算法 2026/03/14】二叉搜索树中第K小的元素
学习·算法
一条大祥脚16 小时前
WQS二分(Alien Trick)
算法
xiaoye-duck16 小时前
《算法题讲解指南:递归,搜索与回溯算法--二叉树中的深搜》--6.计算布尔二叉树的值,7.求根节点到叶节点数字之和
c++·算法·深度优先·递归
greatofdream16 小时前
VIP和普通用户排队
算法
abant217 小时前
leetcode 84 单调栈
算法·leetcode·职场和发展