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

动态规划-回文串问题——5.最长回文子串

1.题目解析

题目来源:5.最长回文子串——力扣 

测试用例 

2.算法原理

1.状态表示

判断回文子串需要知道该回文子串的首尾下标,所以需要一个二维数组且数据类型为bool类型来存储每个子字符串是否为回文子串,

即dp[i][j]:以第i个位置为起始,第j个位置为结尾的子字符串是否为回文子串

2.状态转移方程

当需要判断的子字符串长度小于3可以直接判断是否相等,相等则直接为true,反之则为false

当长度大于3时则需要向中间判断,也就是将长字符串拆分为单个字符穿与两个字符串的情况即可

3.初始化

无需初始化,因为dp表存储的值为bool类型,因此在填表的过程中就动态的将每个位置赋了值

4.填表顺序

因为需要可能用到dp[i+1][j-1]也就是二维表的左下位置,因此需要从下向上填表

5.返回值

这里的dp表每个位置存储的都是该子字符串是否为回文子串,因此需要逐个判断找出最长的回文子串并求出其起始位置与长度,然后返回该子字符串即可

3.实战代码

代码分析 

class Solution {
public:string longestPalindrome(string s) {int n = s.size();vector<vector<bool>> dp(n,vector<bool>(n));int len = 1,begin = 0;for(int i = n - 1;i >= 0;i--){for(int j = i;j < n;j++){if(s[i] == s[j]){dp[i][j] = i + 1 < j ? dp[i+1][j-1] : true;}if(dp[i][j] && j - i + 1 > len){len = j - i + 1;begin = i;}}}   return s.substr(begin,len);}
};

 

http://www.lryc.cn/news/474192.html

相关文章:

  • rtp协议:rtcp包发送和接收规则和报告!
  • label数据(或自定义数据集)转imagenet(用于mmclassification)
  • WebMvcConfigurer
  • Sigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导
  • Python+Appium+Pytest+Allure自动化测试框架-安装篇
  • Python的socket使用
  • 如何快速搭建一个3D虚拟展厅?
  • Android webview 打开本地H5项目(Cocos游戏以及Unity游戏)
  • 解决项目中图片出不来的bug
  • 手机实时提取SIM卡打电话的信令声音-新的篇章(三、Android虚拟声卡探索)
  • REST APIs与微服务:关键差异
  • 【网安案例学习】反向蛮力攻击Reverse Brute Force Attack
  • TCP/IP网络编程:理解网络编程和套接字
  • CSS实现回到顶部且平滑过渡
  • 10 go语言(golang) - 数据类型:哈希表(map)及原理(二)
  • 【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入
  • [POI2014] PTA-Little Bird(单调队列优化 DP)
  • 【含开题报告+文档+PPT+源码】基于SpringBoot的体育馆管理系统的设计与实现
  • Vue3学习:vue组件中的图片路径问题
  • openCV基础-图像预处理Day26
  • 给文件添加可读可写可执行权限
  • golang有序map
  • 【LangChain系列4】【Chain模块详解】
  • 51c嵌入式~IO合集1
  • ETLCloud怎么样?深度解析其在数据管理中的表现
  • 高频谐振功放电路
  • kafka如何获取 topic 主题的列表?
  • 全新大模型框架Haystack,搭建RAG pipeline
  • 儿童孤独症专家分享:了解治疗与支持的专业帮助
  • 初始JavaEE篇——多线程(7):定时器、CAS