5-最长回文子串

【Leetcode】5. 最长回文子串 给你一个字符串s,找到s中最长的回文子串。解释:“aba” 同样是符合题意的答案。 阅读详情

题目

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

示例 1:

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

示例 2:

输入:s = “cbbd”
输出:“bb”

示例 3:

输入:s = “a”
输出:“a”

示例 4:

输入:s = “ac”
输出:“a”

题解一(dp)

class Solution {
    public String longestPalindrome(String s) {
        int len=s.length();
        if(len<2){
            return s;
        }
        int begin=0;
        int maxLen=1;//至少也存在一个字符为回文
        boolean[][] dp=new boolean[len][len];
        //子串的长度从2开始考虑
        char[] s2c=s.toCharArray();
        for(int L=2;L<=len;L++){
            //记录左边的i从0开始
            for(int i=0;i<len;i++){
                dp[i][i]=true;
                int j=i+L-1;
                if(j>=len){
                    break;
                }
                if(s2c[i]!=s2c[j]){
                    dp[i][j]=false;
                }else{
                    if(L==2){
                        dp[i][j]=true;
                    }else{
                        dp[i][j]=dp[i+1][j-1];
                    }
                }
                //此处需要dp[i][j]成立
                if(dp[i][j]&&L>maxLen){
                    begin=i;
                    maxLen=L;
                }
            }
        }
        return s.substring(begin,begin+maxLen);//begin+最长长度不需要-1!!
    }
}

思路:

  1. 状态转移方程:P(i,j)=P(i+1,j-1)^(si=sj)

    边界条件:P(i,i)=true,

    P(i,j)表示i到j是不是回文子串。

  2. 思路:由子串长度l=2开始枚举,最长不超过字符串的长度,由一个指针标记子串的起始地址,一个int记录最长的子串长度,i指向子串的开头,j指向子串的结尾,如果有i开头的子串长度超过最长的长度则更新begin指针。

  3. 时间复杂度:O(n2);空间复杂度:O(n2)

  4. 注意:s.substring(int begin,int end)

力扣5. 最长回文子串C++详解 力扣5. 最长回文子串 注:子数组或者子字符串求解问题一般基本是用DP算法 最长回文子串的解释:正着读和反着读是一样的。 题目解析: 解法一:动态规划 从回文子串的定义我们可以得出两个结论: (1)如果说一个子字符串是回文子串,那么给这个子字符串两边分别加一个数,如果这2个数相等,那么这个新的子字符串也是回文子串。 (2)回文子串的开始和结束位置的字符一定是相... 阅读详情

相关推荐

LeetCode 5 最长回文子串

题目 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 思路 一眼看上去就是动态规划,当然还有更快的方法,详见Manacher算法。 动态规划步骤 确定状态空间 确定状态转移函数,子状态的关系 遍历状态空间,填状态标注 得到结果 状态压缩,优化算法 本题思路 1. 确定状态空间 string s中的最长回文子串即确定s[i:j]是否是回文子串和回文串...

梦中随笔 299

LeetCode5.最长回文子串 JavaScript

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

weixin_40659167的博客 608

LeetCode 5 - 最长回文子串

是一到算法经典题目,考察字符串的基本操作、动态规划、中心扩展等常用技巧,能够有效提升对字符串问题的综合解题能力。以下是详细解析几种主流解法,以及经典的变体问题和对应解决思路。ssn2 * n - 1nn-1dp[i][j]s[i..j]s[i..j]j - i <= 2j - i > 2lManacher 算法是一种优化的解决回文子串问题的线性算法,通过预处理字符串和利用回文的对称性将时间复杂度降低到 O(n)。

互联网架构师笔记 1017

【LeetCode-5】最长回文子串

【LeetCode-5】最长回文子串题目测例思路解题思路易错点代码感想 题目 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 链接:最长回文子串 测例 输入:“babad” 输出:“bab” 注意:“aba” 也是一个有效答案。 思路 解题思路 一看就是个动态规划题,1个字母的时候最大长度是1,两个字母的时候只需要比较他们是否相等,3个字母的时候比较首尾是否相等,4个字母比较首位是否相等,然后再比较中间两个是否相等。而中间两位是否相等在2个字母的时候已经比较过了

qq_40560275的博客 185

Kindle电子书DRM破解全攻略:从下载到转换的完整流程(含最新DeDRM插件配置)

本文详细介绍了如何合法移除个人购买的Kindle电子书的DRM保护,实现跨设备阅读与备份。核心内容包括使用最新DeDRM插件(如noDRM分支)配合Calibre进行配置,并针对亚马逊最新的KFX加密格式提供了密钥提取与实战操作指南。文章强调该方法仅适用于个人合理使用,旨在帮助读者真正掌控自己的数字资产。

delta的博客 577

Veeam Backup Replication Console 13 备份 PVE

本文介绍了如何通过Veeam Backup & Replication控制台配置与Proxmox VE(PVE)服务器的连接,包括主机地址、用户名密码和SSH信任设置。随后详细说明了部署备份Worker虚拟机的步骤,涵盖网络配置和VM创建。接着指导用户创建PVE虚拟机备份任务,包括命名、选择备份对象、存储位置、备份类型设置,以及配置备份计划任务。最后描述了备份测试执行过程,从启动备份到完成状态通知的完整流程。整个操作涉及服务器连接、Worker部署、备份配置和任务执行四个主要环节。

极致,细节 1609

5最长回文子串

一、前言 标签:动态规划、中心扩散。 问题来源LeetCode 5 难度:中等。 问题链接:https://leetcode-cn.com/problems/longest-palindromic-substring/ 二、题目 给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。 示例1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例2: 输入: "cbbd" 输出: "bb" 三、思路...

行走 195

GEE开发之Landsat8计算MNDWI和数据分析

上一篇博客介绍了landsat8计算NDWI以及数据的获取,这次介绍MNDWI(改进的归一化差异水体指数)。

等待着冬天的风的博客 8440

LeetCode5.最长回文子串

LeetCode5.最长回文子串 问题 分析 解法一:中心扩散法 顾名思义就是每一个位置中心去扩散,去找回文串,遇到不是回文串的时候结束。 寻找方法就是首先先找其左边和右边位置,如果相等即继续走,只到走到左边的值和右边的值都不和中间元素相等,然后判断左右值是否相等。 解法二:动态规划 ​ 回看中心扩展算法,其实中间做了很多重复的计算,而动态规划就是为了减少重复计算的问题。即以空间换时间,将计算结果暂时存放起来,以避免重复计算 使用boolean dp[l] [r]表示字符串l到r这段是否是回文串,如果

冢狐的私人空间 2379

ROS-订阅与处理激光雷达scan话题

激光雷达通常有四个性能衡量指标:测距分辨率、扫描频率(有时也用扫描周期)、角度分辨率及可视范围。测距分辨率衡量在一个给定的距离下测距的精确程度,通常与距离真实值相差在5-20mm;扫描频率衡量激光雷达完成一次完整扫描的快慢,通常在10Hz及以上;角度分辨率直接决定激光雷达一次完整扫描能返回多少个样本点;可视范围指激光雷达完整扫描的广角,可视范围之外即为盲区。

weixin_42438635的博客 4478

开源遥感语义分割工具箱mmsegmentation基于Lovedata数据集训练模型

开源遥感语义分割工具箱mmsegmentation基于Lovedata数据集训练模型

yilvyangguang520的博客 500

leetcode 5. 最长回文子串

@(labuladong的算法小抄)[dp, 双指针] leetcode 5. 最长回文子串 题目描述 解题思路 参考:labuladong的算法小抄P373 dp 时间o(n²),空间o(n²) 注意与最长回文子序列解法的区别。子串必须要求是连续的,因此,如果定义dp[i][j]表示s[i...j]最长回文子串的长度,则由dp[i+1][j-1]无法推出dp[i][j] class Solution { public String longestPalindrome(String s) {

Charison的编程妙妙屋 527

Avalonia 超级详细学习指南

什么是 Avalonia?Avalonia 是一个开源的、跨平台的 GUI 框架,允许开发者使用 XAML 和 C# 构建现代化、高性能的桌面应用程序。与其他框架相比,Avalonia 具有强大的跨平台能力和灵活的界面设计。} }()Avalonia 的特点和优势跨平台性:Avalonia 可以在 Windows、Linux、macOS 等多个平台上运行,开发者可以编写一套代码,然后在不同的操作系统上运行相同的应用程序。

仰望星空的博客 1万+

算法:leetcode_5_最长回文子串

摘要:本文介绍了两种求解最长回文子串的方法:动态规划和中心扩散法。动态规划通过构建二维dp表记录子串状态,从下到上、从左到右遍历字符串,时间复杂度较高但思路清晰。中心扩散法则以每个字符(或相邻字符对)为中心向两边扩展寻找回文,更高效且代码简洁。

bugMaker_0621的博客 1071

IEC104协议学习专栏内容规划

IEC104协议的编程学习

sixtome 1110

使用MATLAB的COMSOL LiveLink:实时连接和数据传输

COMSOL LiveLink是一种功能强大的MATLAB工具包,它允许用户在MATLAB环境中与COMSOL Multiphysics软件进行实时连接和数据传输。COMSOL LiveLink是一种功能强大的MATLAB工具包,它允许用户在MATLAB环境中与COMSOL Multiphysics软件进行实时连接和数据传输。使用COMSOL LiveLink,你可以进行更复杂的模型设置和数据传输使用MATLAB的COMSOL LiveLink:实时连接和数据传输。

PixelNinja的博客 2098

C++算法实现 LeetCode 5. 最长回文子串

C++算法实现 LeetCode 5. 最长回文子串   大家好,我叫亓官劼(qí guān jié ),在优快云中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在优快云中写博客,唯一博客更新的地址为:亓官劼的博客 ,同时正在尝试在B站中做一些内容分享,B站主页为: 亓官劼的B站主页 本文原创为亓官劼,请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 若需联系博主,可以联系本人微信:qiguanjie2015 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1:

一起加油 1040

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【LeetCode5】最长回文子串

LC5.Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Input: &amp;quot;babad&amp;quot; Output: &amp;quot;bab&amp;quot; Note: &am

e31006的博客 256

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LeetCode 5. 最长回文子串

欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 5. 最长回文子串,做好准备了么,那么开始吧。

weixin_62275996的博客 612

LeetCode 5最长回文子串

LeetCode 5最长回文子串 题目简述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 输入:“babad” 输出:“bab” 输入:“cbbd” 输出:“bb” 思路:枚举字符串的每一个字符依次作为回文串的中心点,从中心点开始向两边扩散,移动过程中对比中心点左右两个字符是否相同或者是否出界,返回回文串的最长长度 当回文子串是奇数时,从i - 1,i + 1开始往两边扩散 当回文子串是偶数时,从i,i + 1开始往两边扩散 以i为

XBlog 167

算法实践:leetcode5 最长回文子串

leetcode5: 最长回文子串 描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 样例 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 难度 中,动态规划 解法 代码 class Solution { public String longestPalindrome(String s) { ...

matafeiyanll的博客 248

leetcode5.最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-palindromic-substri...

yyf_blog 570

Leetcode 5 最长回文子串

Leetcode 5 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2: 输入: “cbbd” 输出: “bb” 详解: 这道题赵隽面试搜狐焦点的时候遇到了,发现搜狐焦点还是非常喜欢问别人leetcode序号在前边的题目的,这道题的思路是我...

qq_30163473的博客 169

LeetCode_5_最长回文子串

链接 LeetCode_5_最长回文子串 题目 给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 思路 思路一、动态规划 假设字符串("babab")为s, 它的长度为n dp是大小为 n * n 的二维数组, dp[i][j] 表示s[i,j]是否为回文串, 存储true, false ...

AN_ERA的博客 3262

[LeetCode] 5.最长回文子串

[LeetCode] 5.最长回文子串 文章目录[LeetCode] 5.最长回文子串题目思路动态规划中心扩散法 题目 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 思路 首先依旧讲暴力解法 ...

菠萝盖饭的博客 334
上一篇: 474-一和零(01背包)
下一篇: 322-零钱兑换(完全背包)
codrab
博客等级 码龄10年 15粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codrab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值