c语言判断字符串是不是回文_LeetCode 热题 HOT 100 5. 最长回文子串

题目

69fc24f1707c749af1eaa62edf03ae47.png

题解

暴力法

我们根据回文字符串特点进行判断一个字符串是不是回文。

44800c1403f51ae77c10c2f569bfd3e0.png

// 回文子串:首尾对称相等const isPalindrome = s => {    // abba aba    for (let i = 0; i < Math.floor(s.length / 2); i++) {        if (s[i] !== s[s.length - 1 - i]) {            return false        }    }    return true}/** * @param {string} s * @return {string} */var longestPalindrome = function(s) {    let answer = ''    if (s.length <= 1) return s[0] || ''    for (let i = 0; i < s.length - 1; i++) {        for (let j = i + 1; j <= s.length; j++) {            curStr = s.substring(i, j)            if (curStr.length > answer.length && isPalindrome(curStr)) {                answer = curStr            }        }    }    return answer};

动态规划

•一个回文字符串 abdba 去掉首尾后仍是回文 bdb•由此推导状态转移方程 dp•dp[i][j] 表示 s.substring(i, j+1) 这样一个字符串是不是回文字符串•dp[i][j] = (s[i] === s[j]) && dp[i+1][j-1]•dp[i+1][j-1] 即就表示去掉首位字符后•我们还需要考虑一个特殊情况 类似 a ab aba 肯定存在回文串 即 j - i <= 2•动态规划就是充分利用之前缓存的计算结果,快速推倒出一个字符串是不是一个回问文串•动态规划也是典型的 空间换时间的一种思路

24df58389fc818ae593b25797a611690.png

/** * @param {string} s * @return {string} */var longestPalindrome = function(s) {   const len = s.length   let answer = ''   const dp = Array.from(new Array(len), () => new Array(len).fill(false))   // 此处可以省略 base state 初始化 dp[i][j] = true   for (let i = len - 1; i >= 0; i--) {       for (let j = i; j < len; j++) {           // 状态转移方程           dp[i][j] = (s[i] === s[j]) && (j - i <= 2 || dp[i+1][j-1])           // 更新最长子串           if (dp[i][j]) {               console.log(s.substring(i, j + 1))           }           if (dp[i][j] && (j - i >= answer.length)) {               answer = s.substring(i, j + 1)           }       }   }//    console.log(dp)   return answer};

推荐阅读

•告别动态规划,连刷 40 道题,我总结了这些套路,看不懂你打我(万字长文)[1]•如何理解动态规划?[2]

ps: 欢迎关注我的公众号 xyz编程日记,觉得不错的帮忙点个?,点个在看。

References

[1] 告别动态规划,连刷 40 道题,我总结了这些套路,看不懂你打我(万字长文): https://zhuanlan.zhihu.com/p/91582909[2] 如何理解动态规划?: https://www.zhihu.com/question/39948290

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

random list随机生成不重复数

有一个需求&#xff0c;需要随机生成六位数&#xff0c;从100001 ---999999但是又要不重复&#xff0c;且不影响性能。如果每次生成都去判断是否重复&#xff0c;当生成的次数足够多&#xff0c;会影响性能。我想的是开一条线程&#xff0c;提前去处理。 提前生成好随机的数。直…

django 默认查询条件_Python之Django系列-创建第一个应用-4

上一篇&#xff1a;Python之Django系列-创建第一个应用-3 上一篇文章我们介绍了创建项目&#xff0c;打开浏览器访问http://127.0.0.1:8000/polls/&#xff0c;能看见"投票主页视图"等描述。本篇文章我们接着上一篇文章继续学习&#xff0c;在Python之Django系列-初始…

Exception in thread “main“ java.lang.IllegalArgumentException: Illegal Capacity: -1

创建list集合下标超出。 模拟场景 我是由于创建list &#xff0c;大小的时候&#xff0c;写反了

三相同步电机怎么接线图_智能电表怎么接线 单相 三相电表接线图大全

电表分为单相电表和三相电表&#xff0c;接线方法又为直入式和互感式&#xff0c;现在我们分电表种类和接线方法&#xff0c;来讲解电表接线。单相电表直入式接线方法&#xff1a;家用单相电表的接线必须是左火L&#xff0c;右零N&#xff0c;左边火线进&#xff0c;火线出&…

window navicat连接阿里云服务器mysql步骤及常见问题

先登录自己的阿里云服务器 这有两个比较重要的&#xff0c;一个是配置出口端口&#xff0c; 还有一个就是拿到自己的公网ip 连接上服务器 我用的是finalshell 工具连接。 主要是基于docker安装mysql &#xff0c;现在我的服务器docker已经安装了&#xff0c;安装也很简单。网…

docker安装mysql并使用navicat连接

创建映射目录&#xff0c;我安装在用户目录下 mkdir ~/mysql mkdir ~/mysql/conf mkdir ~/mysql/logs mkdir ~/mysql/data 分别执行以上命令&#xff0c;创建文件目录 #启动 docker run -id \ -p 3306:3306 \ --namemysql \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/logs:/lo…

linux centos7下载安装zlib

安装nginx 缺少zlib依赖&#xff0c;由于各种环境无法拉取yum安装&#xff0c; yum安装 yum install -y zlib zlib-devel 手动安装 zlib 版本预览 Index of /fossilshttp://www.zlib.net/fossils/ 解压 tar -zxvf zlib-1.2.8.tar.gz 进入加压后的文件 cd zlib-1.2.8 执行…

idea 升级到2020后 无法启动_升级iOS 14尝鲜后,无法降级 iOS13.5.1?

北京时间6月23日凌晨1点&#xff0c;苹果在线上举行了WWDC 2020全球开发者大会。给我们正式带来了iOS 14&#xff0c;并且在凌晨3点半时的时候&#xff0c;苹果发布 iOS 14 beta 内测版系统&#xff0c;并提供内测升级方法&#xff0c;随后很多用户已经升级体验。但是尝鲜之后&…

【pcre 依赖】linux安装pcre 依赖

记录转载 一、pcre PCRE(Perl Compatible Regular Expressions)是一个轻量级的Perl函数库&#xff0c;包括 perl 兼容的正则表达式库。它比Boost之类的正则表达式库小得多。PCRE十分易用&#xff0c;同时功能也很强大&#xff0c;性能超过了POSIX正则表达式库和一些经典的正则…

java和c++的区别大吗_小自考本科含金量高吗?小自考和大自考有什么区别?

随着成人教育的普及&#xff0c;自考学历变得越来越常见。但是很多人不知道自学考试考分为小自考和大自考&#xff0c;那么小自考和大自考的区别在哪里&#xff1f;小自考本科的含金量高吗&#xff1f;一、小自考本科的含金量高吗&#xff1f;很多人都想知道小自考本科的含金量…

高德地图JSAPI 2.0使用Java代码代替Nginx进行反向代理产生CORS跨域

解决前端访问高德产生的啥啥啥问题&#xff0c;反正问题交给后端做了&#xff0c; 解决高德代理连接&#xff1a; 高德地图JSAPI 2.0使用Java代码代替Nginx进行反向代理https://blog.csdn.net/shechaojin/article/details/126267635?ops_request_misc%257B%2522request%255Fi…

记录生产其妙BUG

奇妙bug本地复现不了&#xff0c;sit环境有问题&#xff0c;最后才发现本地一毫秒处理三十多条数据&#xff0c;所以每隔三十多秒就会有不同的时间&#xff0c;服务器每秒处理数量超过了预期数量&#xff0c;所以sit很容易复现 由于使用lindorm存在诸多限制。有一个业务数据量…

计算页数_中级会计师计算题、综合题的审题注意事项与解题思路

为什么要进行考前冲刺根据多年的考试和培训经验&#xff0c;考前过一遍课本是必须的&#xff0c;且提分相当明显。换种解释方式如果平时测试在40分左右的同学通过最后一个月的冲刺考过的概率能增加65%以上&#xff0c;但最后一个月抓不住机会就只能搁置到明年再考。时不待我&am…

使用中断后不停止_仓鼠偷吃鼠粮,被发现后立刻停止,但鼠鼠满脸不情愿

贪玩馋嘴&#xff0c;是很多宠物的天性&#xff0c;在主人不在家的时候&#xff0c;往往是它们暴露本性的时候。提起贪玩&#xff0c;人们往往会想到哈士奇&#xff0c;因为它们能在主人不在家的时候&#xff0c;把整个屋子给拆了&#xff1b;而提起贪吃&#xff0c;仓鼠却总被…

记录分库分表的分页查询

分库分表的分页查询。不同的业务场景可能不同。我只记录自己的分页方法 public PageAO<User> selectByPage(Filter filter, int page, int size) {//每页条数int pageSize size < 1 ? 10 : size;//计算起始位置int pageIndex page < 1 ? 0 : (page - 1) * pag…

c++查询当前文件夹下文件数目_python3自动化小工具--删除某个文件夹xx后缀文件...

源码 DelSomeFile.py""" 此代码用于删除文件夹下面以txt结尾的文件 &#xff08;同理将.txt-->.py可以删除py文件&#xff09; 借用pyqt5调用文件选择对话框看起来比较人性化点 本来是用win32ui的&#xff0c;但是win32ui不太人性化&#xff0c;不能选择文件…

creo组装后怎样移动元件_BGA元件SMT装配工艺要点简介

当SMT&#xff08;表面贴装技术&#xff09;/SMD&#xff08;表面贴装器件&#xff09;从业者发现间距为0.3mm的QFP&#xff08;四方扁平封装&#xff09;无法实现时&#xff0c;BGA&#xff08;球栅阵列&#xff09;的出现肯定会减少装配缺陷确保SMT质量成就。从系统理论的角度…

burpsuite csrf攻击_WEB安全之CSRF

大家好&#xff0c;我是阿里斯&#xff0c;一名IT行业小白。今天分享的内容是CSRF相关知识&#xff0c;不求表哥们打赏&#xff0c;只求点点在看&#xff0c;点点转发。CSRF漏洞概述CSRF(Cross-Site Request Forgery),中文名为跨站请求伪造&#xff0c;是一种Web攻击方式。该漏…

财物机器人英文ppt演讲课件_“如何恰当使用课件动画”

每晚21&#xff1a;30分享教师干货记得当大姜老师还是一名稚嫩的大一新生时&#xff0c;由于小时候家里管的比较严&#xff0c;几乎没什么碰电脑的机会。即便有了难得的机会&#xff0c;也都用来打游戏了......直到上了大学&#xff0c;需要做各种的汇报PPT、课件PPT、演讲PPT&…

curl 请求日志_kong api网关日志 将请求和响应数据附加到磁盘上的日志文件中

术语plugin&#xff1a;在请求被代理到上游API之前或之后&#xff0c;在Kong内部执行操作的插件。Service&#xff1a;表示外部上游 API或微服务的Kong实体。Route&#xff1a;Kong实体&#xff0c;表示将下游请求映射到上游服务的方法。Consumer&#xff1a;表示使用API​​的…