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

代码随想录算法训练营第五十七天| 647. 回文子串 516.最长回文子序列

代码随想录算法训练营第五十七天| 647. 回文子串 516.最长回文子序列

一、力扣647. 回文子串

题目链接
思路:对于字符串cabac,其中a,b,c,aba,cabac,都是回文子串,如果当前的字串是回文字串,那么它的字串中也会有回文字串,所以状态是有区间的,确定dp数组,dp[i][j]表示,区间[i,j]左闭右闭,表示该区间内的子串是否是回文子串。
当i=j时,一定是回文子串。
当s[i]=s[j],且i+1=j时,是回文子串,类似aa。
当s[i]=s[j],且i+2=j时,也就是类似于aba,i=0,j=2,只要中间的子串是回文子串,那么它也是,故只要dp[i+1][j-1]=true,即为回文子串。
遍历时要注意区间[i,j](i<j),且从下向上,从左向右。

class Solution {public int countSubstrings(String s) {int len = s.length(), result = 0;boolean[][] dp = new boolean[len][len];for (int i = len-1; i >= 0; i--) {for (int j = i; j < len; j++) {if (s.charAt(i) == s.charAt(j)) {if (j - i <= 1) {result++;dp[i][j] = true;}else if (dp[i+1][j-1]) {result++;dp[i][j] = true;}}}}return result;}
}

二、力扣 516.最长回文子序列

题目链接
思路:上面求回文子串数量,是连续的,这里求最长回文子串,是非连续的,依然是dp[i][j]区间[i,j]。
如果s[i]=s[j]那么,状态转移公式就出来了dp[i][j] = dp[i+1][j-1] + 2。
如果s[i]!=s[j]那么,就各取一个留最长的, dp[i][j] = Math.max(dp[i+1][j], dp[i][j-1])。

class Solution {public int longestPalindromeSubseq(String s) {int len = s.length();int[][] dp = new int[len][len];for (int i = 0; i < len; i++) {dp[i][i] = 1;}for (int i = len-1; i >= 0; i--) {for (int j = i+1; j < len; j++) {if (s.charAt(i) == s.charAt(j)) {dp[i][j] = dp[i+1][j-1] + 2;}else {dp[i][j] = Math.max(dp[i+1][j], dp[i][j-1]);}}}return dp[0][len-1];}
}
http://www.lryc.cn/news/113434.html

相关文章:

  • django 优化方式
  • IDEA中怎么使用git下载项目到本地,通过URL克隆项目(giteegithub)
  • 09. Docker Compose
  • 如何在shell脚本将node_modules里的文件复制一份到public文件里
  • 监控Redis的关键指标
  • Openlayers和leaflet如何选用?
  • 跟我学C++中级篇——三五法则
  • aardio:用 WebView 模仿 mdict 界面
  • linq中的操作符
  • 数据结构【哈夫曼树】
  • SpringMVC基于SpringBoot的最基础框架搭建——包含数据库连接
  • deepspeed zero3
  • 代驾小程序怎么做
  • 探索 AJAX 技术:实现动态数据交互的前端利器
  • 深度学习Redis(3):主从复制
  • php笔记1
  • 2023 ChinaJoy 圆满闭幕,FairGuard游戏加固亮相 BTOB 展区
  • 数据规约策略
  • 服务器带宽独享跟共享有什么区别103.36.166.x
  • 【cluster_block_exception】写操作elasticsearch索引报错
  • chaitin-Nginx+Docker
  • 具体面试题
  • Logback ThresholdFilter LevelFilter
  • python+django+mysql项目实践二(前端及数据库)
  • Kubernetes高可用集群二进制部署(五)kubelet、kube-proxy、Calico、CoreDNS
  • 拦截器对接口细粒度权限校验
  • 计算机科技历史纵横:8月6日的十大里程碑
  • 知识图谱实战应用23-【知识图谱的高级用法】Neo4j图算法的Cypher查询语句实例
  • C++ 头文件函数大全
  • 智慧物流园区整体架构方案【46页PPT】