当前位置: 首页 > news >正文

动态规划之回文串问题

以leetcode647题为例 

题目解析:

子串的概念就类似子数组,是连续的不能间断的

注意这道题每一个起始位置不一样,但是字母一样,子串就不一样,类似与aaa,第一个a是一个子串,第二个a也是一个子串,不能把他们认为是相同的子串

回文子串,就是正着念和倒着念一样

讲解算法原理:

这道题有更优解的算法:

中心扩展算法时间O(n^2)空间O(1),

马拉车算法时间O(n)空间O(n),算法比较局限,只能解决回文串问题

但这个专题是动态规划,所以以动态规划进行讲解,动态规划时间和空间都是O(n^2);

 

创建一个二维的dp表,dp[i][j]:表示以i位置为起始,j位置为结束,判断这一段子串是否为回文子串

注意只需要判断上三角和对角线,下三角根本不用判断,重复了

需要严格限制i<=j

打情况有两种,一种是s[i]!=s[j],dp[i][j]=false;

第二种是s[i]==s[j],在细分i和j的情况

 

我们填dp[i][j]的时候可能用到dp[i+1][j-1]的情况,在dp表中就是左下角,所以填表时从下往上

  

总结

 

为什么我们要学习动态规划处理回文子串

原因在于我们能够将所有的子串是否是回文的信息储存在dp表里面 

代码编写 

 

相关文章:

  • 『深夜_MySQL』数据库操作 字符集与检验规则
  • 格式工厂:一站式多媒体文件转换专家
  • 【MATLAB源码-第277期】基于matlab的AF中继系统仿真,AF和直传误码率对比、不同中继位置误码率对比、信道容量、中继功率分配以及终端概率。
  • 分布式-基于数据库排他锁
  • RFID电子标签(芯片)及RFID射频识别技术深度解析
  • 软件工程学概述
  • 加速页面加载的全流程优化策略
  • 【MySQL】C语言访问数据库
  • 解锁 AI 生产力:Google 四大免费工具全面解析20250507
  • (2025,AR,NAR,GAN,Diffusion,模型对比,数据集,评估指标,性能对比)文本到图像的生成和编辑:综述
  • Rust 与 Golang 深度对决:从语法到应用场景的全方位解析
  • 【HarmonyOS 5】鸿蒙中常见的标题栏布局方案
  • 深入探索 Spark RDD 行动算子:功能解析与实战应用
  • 张正友相机标定方法中标定板角点检测算法原理(Harris和Shi-Tomasi角点检测算法)
  • GSENSE2020BSI sCMOS科学级相机主要参数及应用场景
  • Spark external shuffle service
  • 经典计算机的掣肘在哪?
  • 强缓存与协商缓存的实现机制
  • B树如何用于磁盘 ,B+树为如何用于数据库
  • 基于Django框架开发的B2C天天生鲜电商平台
  • 著名蒙古族音乐学者马•斯尔古愣逝世,享年86岁
  • 为发期刊,高校学者偷贩涉密敏感数据!国安部披露间谍案细节
  • 王毅同印度国家安全顾问多瓦尔通电话
  • 巴西总统卢拉将访华
  • 泰特现代美术馆25年:那些瞬间,让艺术面向所有人
  • 中俄就应对美加征所谓“对等关税”等问题进行深入交流