LeetCode5最长回文字串

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

示例 1:

输入:s = "babad"

输出:"bab"

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

示例 2:

输入:s = "cbbd"

输出:"bb"

提示:

1 <= s.length <= 1000

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

  • 首先我们要了解回文串是怎样的字符串,回文串就是一个对称的结构,左右对应位置的字符相等,比如abba,acacbcaca,像abab这种就不是回文串,那了解了这样的结构,我们就能想到是用动态规划来解决了,它要划分成很多子问题。大概的思路就是如果一个字串左右两边字母相等,那么去除左右两边的字符,剩下的字符串还是回文串的话,原串也是回文串。
java 复制代码
class Solution {
    public String longestPalindrome(String s) {
        int max = 0;
        String str = "";
        boolean dp[][] = new boolean[s.length() + 1][s.length() + 1];
        for (int i = s.length() - 1; i >= 0; i --) {
            for(int j = i; j < s.length(); j ++){
            	// j - i <= 1这个条件是一个细节,如果字串长度小于等于1那他一定是回文串
                if(s.charAt(i) == s.charAt(j) && (j - i <= 1 || dp[i + 1][j - 1])){
                    dp[i][j] = true;
                    if (j - i + 1 > max){
                        max = Math.max(max, j - i + 1);
                        str = s.substring(i, j + 1);
                    }
                }
            }
        }
        return str;
    }
}

大家有问题的话可以留言

相关推荐
leobertlan4 小时前
痛苦系列 | DSP-03 跨越单位圆:Z变换与零极点分析
算法·程序员
蛋蛋的就会顺顺的4 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
需要8264 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
开发小能手1235 小时前
答案daanC语言
数据结构·算法
小 黄 鸡5 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
Navigator_Z6 小时前
LeetCode //C - 1291. Sequential Digits
c语言·算法·leetcode
伯恩bourne7 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_7 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
pride.li7 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
省钱兄--zs7 小时前
深圳24小时自助健身房软硬件解决方案实战指南与开发流程详解
java·数据仓库·spring boot·小程序·架构