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

动态规划之回文串问题

以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表里面 

代码编写 

 

http://www.xdnf.cn/news/4552.html

相关文章:

  • 第7章-3 维护索引和表
  • 添加地形与自定义地形
  • HTML基础2-空元素,元素属性与页面的结构
  • livedata使用,完整的livedata的Demo
  • Spring 中org.springframework.core.Ordered接口的实战教学
  • 在 ESP-IDF 中使用 .a 静态库调用
  • 解析表观遗传学的工具——ChIP-seq(一)
  • 数据库即服务(DBaaS)领域的最新创新
  • 每日一道leetcode
  • SCADA|KingSCADA运行报错:加载实时库服务失败
  • git 入门使用教程
  • 全国通用Y1大型游乐设施修理作业证精选题
  • PTS-G5K13M RF Generator 5kW / 13MHz 射频电源User s Manual
  • Spring Boot 如何自动配置事务管理器?
  • 数据结构之线性表
  • 阿里云codeup以及本地gitclone+http
  • Mybatis标签使用 -association 绑定对象,collection 绑定集合
  • ROS第十三梯:RViz+Marker——自定义几何形状可视化
  • 深度学习模型的部署实践与Web框架选择
  • 淘宝按图搜索商品(拍立淘)Java 爬虫实战指南
  • 拉削丝锥,螺纹类加工的选择之一
  • 1.3 Expression.Lambda表达式树的介绍
  • LWIP的超时事件笔记
  • 【python】使用Python和BERT进行文本摘要:从数据预处理到模型训练与生成
  • vllm命令行启动方式并发性能实测
  • 联想Horizon 2系列电脑 参数
  • SpringBoot学生宿舍管理系统开发实现
  • 浏览器跨标签通信的实现原理
  • feign负载均衡
  • linux(centos)联网情况下部署