leetcode5 最长回文子串

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

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

示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:
输入:s = “cbbd”
输出:“bb”
示例 3:
输入:s = “a”
输出:“a”
示例 4:
输入:s = “ac”
输出:“a”

提示:
1 <= s.length <= 1000
s 仅由数字和英文字母(大写和/或小写)组成

思路:从头至尾遍历字符串,将每个字符或其与下一个字符中间位置设置为回文子串的中轴,进行分类讨论,然后向两侧拓展,直到遭遇不同的字符为止。保存回文子串长度,与已有最大长度进行比较,若出现了更长的回文子串,则更新最大值,同时保留中轴位置。最后根据保存的最大长度和中轴位置建立新字符串进行填充。

代码:

class Solution {
    public String longestPalindrome(String s) {
        int ans = 1;
        int f = 0;
        for(int i = 0;i < s.length();i++)
        {
            int k = 0;
            for(int j = 1;i - j >= 0 && i + j < s.length();j++)
            {
                if(s.charAt(i - j) == s.charAt(i + j))
                {
                    k += 2;
                }
                else break;
            }
            k++;
                    if(k > ans)
                    {
                        ans = k;
                        f = i;
                    }
            k = 0;
            for(int j = 0;i - j >= 0 && i + j + 1 < s.length();j++)
            {
                if(s.charAt(i - j) == s.charAt(i + j + 1))
                {
                    k += 2;
                }
                else break;
            }
            if(k > ans)
                    {
                        ans = k;
                        f = i + 1;
                    }
        }
        String str = "";
        StringBuffer sb = new StringBuffer(str);
        for(int i = 0;i < ans;i++)
        {
            sb.insert(i,s.charAt(f - ans / 2 + i));
        }
         return sb.toString();
    }
}
【Leetcode】5. 最长回文子串 给你一个字符串s,找到s中最长的回文子串。解释:“aba” 同样是符合题意的答案。 阅读详情

相关推荐

力扣5:最长回文子串

5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 常规的暴力法就是遍历各个子串,并且判断子串是否是回文串,这样时间复杂度为O(n^3) 接下来我们看动态规划做法 我们假设一个dp数组,dp[i][j]表示s[i…j]是否为回文串 由于回文子串具备天然的状态转移特性 当两头字母相同时,去掉两头字母

码农ZZK的博客 459

力扣LeetCode: 5 最长回文子串

回文串的几种常见方法,枚举,中心拓展,动态规划

weixin_73982851的博客 915

【中等】力扣算法题解析LeetCode5:最长回文子串

题目要求找到字符串中最长的回文子串,采用中心扩散法。遍历每个字符及其间隙作为中心,向两边扩展寻找最长回文子串。时间复杂度O(n²),空间复杂度O(1)。Java实现通过expandAroundCenter方法计算回文长度,更新最大子串边界后返回结果。

ylumwd的博客 419

力扣LeetCode第5最长回文子串

力扣LeetCode第五题最长回文子串

weixin_44061444的博客 168

Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明

Utrust4701F与Utrust2700R读写器支持银河麒麟系统,广泛应用会员管理、支付管理等领域。本文将重点介绍Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明。以上方法适用于主流国产操作系统,如 优麒麟(UbuntuKylin)/ 中标麒麟(NeoKylin) / UOS(统信操作系统)/ 中兴新支点 / 红旗 linux(redflag linux)/ 普华 Linux(I-soft OS) / 威科乐恩 Linux(WiOS)等

华翔天诚科技 1834

告别手动复制粘贴!用Python脚本+pywinauto实现PC微信消息自动发送(附完整源码)

本文详细介绍了如何利用Python和pywinauto实现PC微信消息的自动化发送,告别繁琐的手动操作。从环境搭建、UI控件定位到构建健壮的发送流程,再到高级功能扩展和项目打包部署,全面解析了自动化办公的实现方案,显著提升工作效率。

weixin_30315723的博客 585

【力扣LeetCode】5 最长回文子串

题目描述(难度中) 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2: 输入: “cbbd” 输出: “bb” 链接 https://leetcode-cn.com/problems/longest-palindromic-substring/ 思路 1...

Jiewang的博客 272

【嵌入式DIY实例-ESP32篇】-热成像仪

在本文中,我们将使用 MLX90640 热像仪和 1.8 英寸 ST7735 TFT 显示屏,构建一款基于 ESP32 的高性能紧凑型热像仪。本项目旨在打造一款便携、响应迅速的热像仪,具有增强的图像质量、优化的帧率和精准的温度读数。

视觉与物联智能 878

5.最长回文子串-力扣(LeetCode)

5.最长回文子串-力扣(LeetCode)的两种做法:中心扩展法和动态规划,附有c++和Java代码,以及详细注释

m0_74304371的博客 1015

基于STM32开发板的USB MIDI键盘实现

在本文中,我们介绍了如何使用STM32开发板和相应的软件工具来实现USB MIDI键盘。通过配置STM32CubeMX和编写相应的源代码,我们能够将STM32开发板转换为一个功能齐全的USB MIDI设备。我们将使用STM32开发板和相应的软件工具来实现这一功能,并提供相应的源代码供参考。此时,您应该可以使用STM32开发板作为USB MIDI键盘,并在按键按下时听到相应的音符。在STM32CubeMX中,选择适当的STM32型号,并启动一个新的项目。然后,将生成的可执行文件烧录到STM32开发板中。

2301_79326616的博客 1589

【OpenClaw企业级智能体实战】第27篇:Skill生态运营——企业私有Skill商店的搭建与审核机制

2026年ClawHavoc供应链攻击事件曝光超1200个恶意Skill渗透公共技能市场,工信部明确要求企业审慎使用第三方技能包并严格审查代码。本文基于真实安全事件与行业实践,完整讲解企业私有Skill商店从0到1搭建方案,覆盖小团队极简GitLab私有仓库、中大型企业Nacos 3.2私有Registry两种主流架构,配套企业级安全审核四步法、静态代码扫描规则、CI/CD自动化审计、数字签名校验与版本生命周期管理。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 501

leetcode-5 最长回文子串

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

陈三一的博客 290

材料仿真软件:LAMMPS_(8).温度和压力控制

在 LAMMPS 中,温度和压力的控制是通过多种恒温器和恒压器实现的。Nose-Hoover 恒温器和恒压器因其准确性和广泛适用性而被经常使用,而 Berendsen 恒温器和恒压器则因其计算效率高而适用于初步仿真或粗粒化模型。温度重标和压力重标方法虽然简单,但在某些情况下可以快速调整系统的温度和压力。通过选择合适的控制方法,可以根据具体的需求和系统特性来设计和运行分子动力学仿真,从而获得准确和可靠的结果。在实际应用中,建议先进行初步的仿真以确定合适的控制参数,然后再进行细致的仿真以验证结果的稳定性。

kkchenjj的博客 1692

力扣 leetcode 5. 最长回文子串(python)

Topic 给你一个字符串 s,找到 s 中最长的回文子串。 Example_1 输入:s = “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 Example_2 输入:s = “cbbd” 输出:“bb” Example_3 输入:s = “a” 输出:“a” Example_4 输入:s = “ac” 输出:“a” Tips 1 <= s.length <= 1000 s 仅由数字和英文字母(大写和/或小写)组成 Solution 本题可以采用

weixin_50791900的博客 437

0 基础学前端:100 天拿 offer 实战课(第 16 天)—— JS 数组高级方法:数据处理效率翻倍,代码更简洁

方法名核心作用回调函数返回值返回结果适用场景map数据转换转换后的新元素新数组(长度与原数组一致)格式转换、新增字段、生成 DOM 字符串filter数据筛选true(保留)/false(过滤)新数组(符合条件的元素)筛选符合条件的元素(如未完成计划、今天的评论)reduce数据汇总新的累加值任意类型(数字、对象等)求和、计数、分组、多数据汇总find查找元素true(匹配)/false(不匹配)第一个匹配的元素 /undefined。

苏打水.X的博客 135

十三种通信接口芯片——《器件手册--通信接口芯片》

通信接口芯片用于实现差分信号的传输,具有抗干扰能力强、传输距离远等优点。RS485支持多点通信,可连接多个收发器,而RS422支持单向多点通信。广泛应用于工业自动化、过程控制、仪器仪表、楼宇自动化(如暖通空调、保安系统)、电机控制等领域。ST3485EBDRTP8485ESR用于实现串行通信,支持点对点通信,传输距离相对较短,数据速率较低。常用于计算机与外设(如打印机、调制解调器)之间的通信。如芯力特的SIT3232,可作为ST3232的替代品。

XU157303764的博客 4275

力扣5.最长回文子串(java)

力扣5.最长回文子串题目思路代码 LeetCode笔记汇总 题目 给你一个字符串 s,找到 s 中最长的回文子串。 思路 先考虑特殊情况:s为空或者s的长度小于1,此时的s必定不为回文串,直接返回一个空串"" 正常情况下,使用中心扩展算法 如果一个子串是回文串,根据回文串的定义,将其左右两边各去掉一个字母之后仍然为回文串 因此我们可以在已知的回文串两边各再扩展一个字符,如果相等,则仍未回文串 代码 class Solution { public String longestPalindrome(S

k_surge的博客 377

visio安装包

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

LeetCode5.最长回文子串 JavaScript

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

weixin_40659167的博客 608

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java力扣LeetCode 5. 最长回文子串

5. 最长回文子串 java力扣LeetCode 给你一个字符串 s,找到 s 中最长的回文子串。 方法一 暴力求解 class Solution { public String longestPalindrome(String s) { String res = null ; int m=0; int flag=0; for(int i = 0;i<s.length(); i++) { for(int j =s.length()-1; j>i;j--)

weixin_43857838的博客 626

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【LeetCode-5】最长回文子串

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

qq_40560275的博客 185

LeetCode5.最长回文子串

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

冢狐的私人空间 2379

力扣LeetCode #5 最长回文子串(LongestPalindrome)

- 题目描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 来源:LeetCode(https://leetcode-cn.com/problems/longest-palindromic-substring/) - 示例 示例1 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例2 输入: “cbbd” 输出: “bb” - 思路分析 回文字符串简单理解就是s[i] = s[s.length()-1-i]。比较容易的做法

weixin_49155948的博客 165

golang力扣leetcode 5.最长回文子串

5.最长回文子串5.最长回文子串题解代码 5.最长回文子串 5.最长回文子串 题解 题目:给你一个字符串 s,找到 s 中最长的回文子串 思路: 暴力,两重循环,第一层循环i作为起始,第二层循环j作为结束,判断字符串i到j是否是回文串 中心扩散,遍历字符串,以中心作为回文串中心,判断中心的两边,进行扩散 dp,dp[i][j]为以i开始j结尾的字符串,如果s[i]==s[j],那么dp[i][j]=dp[i+1][j-1],这就是状态转移了,首先要枚举字串长度,再枚举左边界,如果反过来则有些状态是还没有确

清风 1503

【leetcode力扣】PHP实现:5. 最长回文子串

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

allen的博客 879

【力扣】5. 最长回文子串 - 力扣(LeetCode)

这个问题比较简单,对于字符串"ab"而言,循环中不会进行判断,也就是max的值不会更新,所以返回s时第二个值要截断成’\0’,所以要max预设成1;对于个题目而言,我使用的均是中心扩散法,但是细节处理有些不同,有两个版本,一个是字符串原地返回,另外一个是申请内存并进行保持符合要求的字符串,然后进行返回;如果只按照上面的思路进行写程序,会显得很麻烦,很多细节要考虑到,因此可以选择暴力一点,对每一个字符,我们都认为它既是奇数类又是偶数类,,这时很理所当然的,我当时也是这样认为的,但是结果是错误的!

w384829981的博客 632

力扣(LeetCode) 5.最长回文子串

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

weixin_43646672的博客 212
上一篇: leetcode3 无重复字符的最长子串
下一篇: 并查集的概念与实现
code:R
博客等级 码龄6年 36粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值