动画演示LeetCode算法题:005-最长回文子串,多种实现方式

判断回文数字/字符串 一、判断回文字符串 给定一个字符串,判断字符串是否为回文 在字符串的首尾两端放置两个指针,然后遍历字符串直到两指针相遇。在此过程中,如果出现两指针指向的数值不相等,则表示不是回文 时间复杂度O(n) #include <iostream> using namespace std; int main() { char str[]="abba"; int len = s... 阅读详情

题目:

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例1:

输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。

示例2:

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

分析

首先什么是回文字符串?回文字符串就是整个字符串以中轴对称的字符串,比如:“abcdcba”、"abba"都是回文字符串。毫无疑问空字符串和长度为1的字符串都是回文字符串。
如果要判断一个字符串是不是回文字符串,只需要从字符串的中间向两边遍历并且判断对应位置的字符相等即可。字符串长度为奇数时,最中间的那个字符就是起始位置,如果字符串长度为偶数,最中间的两个字符就是起始位置。

最笨的解法

要想在字符串中找到最大的回文子串,最笨的办法,也是最容易想到的办法肯定是循环遍历。我们可以遍历出字符串每一个字符为中心的回文子串,在这些全部的子串中找到长度最长的即可。这种笨办法的时间复杂度为O(n^2)。
实现代码如下:

利用数组缓存回文状态

上面的方法是双层循环遍历所有的回文字符串,然后通过比较他们的长度,找到最长的那个。我们还可以创建一个二维数组temp[][],temp[i][j]表示区间[j,i]是不是回文字符串。
那么我们就可以有如下的递推:

  • i == j时表示的是单个字符,所以有temp[i][j] = true;
  • i == j + 1时表示的是相邻字符,所以有i,j字符相等时temp[i][j] = true,否则temp[i][j] = false;
  • i > j + 1时,我们只需要知道区间[j + 1, i - 1]是否是回文字符串,如果不是那么temp[i][j]肯定也不是,如果是,那么再判断i、j字符串是否相等。

根据上面的递推实现的代码如下:

下面是字符串"babad"的执行过程:

O(n)的解法

第一种方法是双层循环求解的,所以时间复杂度肯定是O(n2)的。第二种方法也是有两层循环,虽然内循环不是完整的n,但时间复杂度还是O(n2)的。
那么有没有时间复杂度为O(n)的解法呢?显然是有的。
下面是实现的代码:

更多LeetCode文章:
https://github.com/ybjx/Leetcode

扫码关注
头条号:  微信公众号:

最长回文子串c语言 自己编的,望大家指点!这是西工大期末考试的题目,做了好久才做出来 立即下载

相关推荐

COMSOL相场法模拟枝晶生长:溶质偏析模型搭建全流程

凝固过程中枝晶形貌与溶质偏析直接决定铸件微观组织与力学性能,是材料加工领域长期关注的核心问题。相场法凭借弥散界面描述天然处理拓扑演化,成为模拟枝晶生长的主流数值方法,而通用有限元平台COMSOL为自定义偏微分方程求解提供了高度灵活的实现路径。从热力学驱动、界面各向异性到溶质再分配,模型需准确耦合相场方程与浓度扩散方程,才能在二元合金凝固模拟中还原真实枝晶尖端速度、二次臂形貌及界面富集行为。围绕溶质偏析这一关键变量,建模过程涉及无量纲化参数标定、反溶质截留项配置、分离式求解器与网格各向异性控制等核心细节。该方

weixin_30402231的博客 308

[ 编码 ] 遍历:Java 判断回文

方法一: 直接使用 StringBuilder类提供的反转字符串的方法 //判断回文(stringBuffer版) public static boolean isTenet(String str){ StringBuilder builder = new StringBuilder(str); String str_rev = builder.reverse().toString(); if (str.equals(str_rev)){

Java 196

LDO稳定性分析

根据补偿方式和拓扑结构的不同,三个极点之间的相互位置有可能发生变化,但 是 LDO 通常采用较大的输出电容 Cout,以及较大的调整管也会导致较大的 Cpar, 所以 p1、p2 通常位于较低的频率处,而 p3 和 z1 则由于 Resr较小会位于较高的频 率处。不过幸运的是,对于较大的 Cout来说,只要选择合适的 Resr,就可以将左半平面零点 Z1 的频率降低,甚至使 Z1 进入单位增益带宽内,左半平面零点的进入将对相位有所改善,这不仅可以消除振荡的风险,还可以在单位增益频率处得到较好的相位裕度。

模拟芯片设计 1593

每日一刷题之回文数和回文字符串

回文数与字符串就是前后看起来一致

qq_58397569的博客 683

【vivado PG学习】1 PG168:7 Series FPGAs Transceivers官方配置方法学习笔记

介绍: The 7 series FPGAs Transceivers Wizard LogiCORE™ IP 自动创建配置7系列fpga 收发器的HDL封装。向导可以配置一个或多个支持行业主流标准的高速串行收发器。或者从零开始支持各种自定义协议。 功能: 创建配置7系列fpga 收发器的HDL封装。 自动对模拟设置进行配置。 预定义了提供Aurora 8B/10B, Aurora 64B/66B, CEI-6G,DisplayPort, Interlaken, Open Base StationAr..

w0shishabi的博客 5万+

手把手教你用Boot-Repair快速修复Ubuntu启动分区缺失(附详细命令行步骤)

本文详细介绍了如何使用Boot-Repair工具快速修复Ubuntu启动分区缺失问题,包括诊断、应急准备、自动修复和手动命令操作。通过grub rescue模式下的关键命令和Boot-Repair的图形界面操作,帮助用户高效解决启动分区故障,确保系统恢复正常运行。

weixin_29229989的博客 563

回文子串 -- C语言

需求 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。 示例 1: 输入: "abc" 输出: 3 解释: 三个回文子串: "a", "b", "c". 示例 2: 输入: "aaa" 输出: 6 说明: 6个回文子串: "a", "a", "a", "aa", "aa"...

六六哥的博客 1975

别再瞎调了!手把手教你搞定STM32步进电机PID速度环(附完整代码与比例系数详解)

本文详细解析了STM32步进电机PID速度环的完整实现过程,从算法输出到脉冲频率的转换链路,重点讲解了比例系数的确定方法及系统标定实验。通过完整的代码示例和调试技巧,帮助工程师解决实际应用中的常见问题,提升步进电机控制精度与稳定性。

weixin_28729331的博客 214

给定一个字符串s,问该字符串里有多少个长度大于1的连续子串都是回文?

题目 给定一个字符串s,问该字符串里有多少个长度大于1的连续子串都是回文? 回文:正序的文本内容与倒序的文本内容相同,比如 aa,aba。 代码 def isHuiwen(s): count = 0 # 控制字串长度 for i in range(1, len(s)): # 控制子串左边界 for j in range(len(s) - i): # 取子串 str = s[j:(j + i + 1)]

weixin_44200553的博客 759

详解Xilinx FPGA高速串行收发器GTX/GTP(6)--Pattern Generator/Pattern Checker

详解Xilinx FPGA高速串行收发器GTX/GTP(6)--Pattern Generator/Pattern Checker

孤独的单刀 1625

时序预测 | MATLAB实现NGM(1,1)多变量灰色时间序列预测

时序预测 | MATLAB实现NGM(1,1)多变量灰色时间序列预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 1514

怎么判断一个字符串的最长回文子串是否在头尾_动画演示LeetCode算法题:005-最长回文子串,多种实现方式...

题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例2:输入: "cbbd"输出: "bb"分析首先什么是回文字符串?回文字符串就是整个字符串以中轴对称的字符串,比如:"abcdcba"、"abba"都是回文字符串。毫无疑问空字符串和长度为1的字符串都是回文字符串。如...

weixin_39669202的博客 69

SOC估算方法之(OCV-SOC+安时积分法)

此方法主要参考。

m0_61973119的博客 935

回文字符串判断c语言_动画演示LeetCode算法题:005-最长回文子串,多种实现方式...

题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例2:输入: "cbbd"输出: "bb"分析首先什么是回文字符串?回文字符串就是整个字符串以中轴对称的字符串,比如:"abcdcba"、"abba"都是回文字符串。毫无疑问空字符串和长度为1的字符串都是回文字符串。如...

weixin_39964573的博客 149

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LeetCode005——最长回文子串

我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/longest-palindromic-substring/description/ 题目描述: 知识点:动态规划 思路一:暴力解法(在LeetCode中提交会超时) 注意回文子串的定义,题目中的回文子串要...

清风阁 1502

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

最长回文子串-leetCode-005

回文子串:暴力法,中心拓展法,动态规划,Manacher 算法

m0_74287204的博客 1116

【力扣日记】005最长回文子串

标题:力扣题库的第五题 详情:给定字符串,求其中的最长回文子串。 语言:python3 其他:算法 / KMP / Manacher算法(误) 思路:求回文子串的思路,首先考虑字符串长度,长度为0时if not s:return ''。    然后就是遍历。但是暴力法并不可取,动态规划也很麻烦。    观察回文子串,考虑到子串以中心展开,两侧互为镜像,这样的中心点可以有2n-1个(奇数回文n个中心...

Heart_for_Ling的博客 368

LeetCode 005 最长回文子串

005 最长回文子串 腾讯精选50 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2: 输入: “cbbd” 输出: “bb” 方法一:暴搜 从两端开始如果符合回文子串就记录下来,同一起点就不需要继续搜索了,改变起点,把终点回到最右边重新开始 代码: p...

从零学起 212

【LeetCode】005——最长回文子串(详解)

题目描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2: 输入: “cbbd” 输出: “bb” 解题思路 1、暴力解   最容易想到的就是暴力解,求出原字符串s的每一个子串,然后再判断是不是回文,找到最长的那个即可。 class Sol...

Daycym的博客 478

【Leetcode】005最长回文子串

题目描述给你一个字符串 s,找到 s 中最长的 回文子串。示例1输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例2输入:s = “cbbd”输出:“bb”提示s 仅由数字和英文字母组成。

xiaodoudouer的博客 428

005. 最长回文子串 | Leetcode题解

点击上方“蓝色字体”,选择“设为星标”每天复习一道面试题,轻松拿大厂Offer~题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:...

画漫画的程序员∙苏南 227

005最长回文子串C++版本

最长回文子串题目暴力解法中心扩展动态规划(待定) 题目 输入:字符串s 输出:最长回文子串 示例1: 输入: “babad” 输出: “bab” 示例2: 输入: “cbbd” 输出: “bb” 暴力解法 string longestPalindrome(string s) { if (s.size() <=1) { return s; } int maxlen = 1; string retstr = s.substr(0,1); //暴力

梦三岁的博客 241

leetcode最长公共子串_LeetCode-005 最长回文子串

题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 来源:力扣(LeetCode) 题目分析什么是回文?回文是一个正读和反读都相同的字符串,例如: “121” 是回文,“123” 不是。 暴力解法寻找所...

weixin_39786155的博客 70

Leetcode 5.最长回文子串

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

Bing's Blog 338

模拟卷Leetcode【普通】005. 最长回文子串

005. 最长回文子串 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s = “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示例 2: 输入:s = “cbbd” 输出:“bb” 示例 3: 输入:s = “a” 输出:“a” 示例 4: 输入:s = “ac” 输出:“a” 提示: 1 <= s.length <= 1000 s 仅由数字和英文字母(大写和/或小写)组成 来源:力扣(LeetCode) 链接:https://leetcode

卷子的博客 143

Leetcode 005. 最长回文子串 | 每日一题

题目描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 Js 中 文 网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/ 示例 2: 输入: "cbbd" 输出: "bb" 难度: 难度:中等 支持语言:JavaScript、Java、Python 相关标签 Js中文网 - 全球前端挚爱的技术成长平台 回文 动态规划

画漫画的程序员∙苏南 412
上一篇: 动画演示LeetCode算法题:004-寻找两个有序数组的中位数
下一篇: 动画演示LeetCode算法题:005-Z 字形变换
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值