【代码随想录二刷】day 57 | 647. 回文子串 516.最长回文子序列

news/2024/12/2 12:55:05/

二刷主要记录理解不一样的题

一刷地址:day57

今日题目:困难

今天的题目是从两边往自己搜索dp,其实是区间dp的题

回文子串

dp

class Solution {public int countSubstrings(String s) {int n = s.length();boolean[][] dp = new boolean[n][n];int ans = 0;for(int i = n-1; i >= 0; i--){for(int j = i; j < n; j++){// j - i = 1:表示一个字母的时候,肯定是回文数// j - i = 2:表示两个字母的时候,也是回文数if(s.charAt(i) == s.charAt(j) && (j - i < 2 || dp[i+1][j-1])){dp[i][j] = true;ans++;}}}return ans;}
}

双指针 考虑i向两边扩散,或者i+1向两边扩散

class Solution {public int countSubstrings(String s) {int n = s.length();int ans = 0;// i < 2*n-1的目的是让l落在0-n-1之间,相当于以每一个字母左右起始,然后往两边扩散for(int i = 0; i < 2 * n - 1; i++){int l = i / 2;int r = i / 2 + i % 2;while(l >= 0 && r < n && s.charAt(l) == s.charAt(r)){l--;r++;ans++;}}return ans;}
}

最长回文子序列

递归

class Solution {String s;int[][] memo;public int longestPalindromeSubseq(String s) {this.s = s;int n = s.length();if(n == 1) return 1;memo = new int[n][n];for(int[] mem: memo) Arrays.fill(mem, -1);return dfs(0, n-1);}int dfs(int i, int j){// 空串if(i > j) return 0;// 只有一个字母if(i == j) return 1;if(memo[i][j] != -1) return memo[i][j];if(s.charAt(i) == s.charAt(j)){// 两个字母,都选memo[i][j] = dfs(i+1, j-1) + 2;}else{// 枚举选哪个memo[i][j] = Math.max(dfs(i+1, j), dfs(i, j-1));}return memo[i][j];}
}

dp

class Solution {public int longestPalindromeSubseq(String s) {int n = s.length();int[][] dp = new int[n][n];for(int i = n-1; i >= 0; i--){// 只有一个字母的情况dp[i][i] = 1;for(int j = i+1; j < n; 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][n-1];}
}

http://www.ppmy.cn/news/117076.html

相关文章

TIM软件 docx.文件 安卓手机下载路径

文件管理\手机储存\Android(系统数据)\data\com.tencent.tim\Tencent\TIMfile_recv

android 神器 自动连接手机软件,安卓手机必备的4款神器黑科技APP!一个比一个厉害,请谨慎使用...

原标题&#xff1a;安卓手机必备的4款神器黑科技APP&#xff01;一个比一个厉害&#xff0c;请谨慎使用 1、氢应用 氢应用真的是一个非常黑科技的APP&#xff0c;一个APP相当于几十个APP&#xff0c;并且不占用手机本地内存&#xff0c;非常方便。它提供很多插件&#xff0c;这…

android 导入 苹果手机,安卓手机文件怎么传到苹果手机

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 苹果的IOS是封闭的系统&#xff0c;没有和安卓一样开放的文件管理&#xff0c;就算是用手机助手给在系统里面建立了一个类似于U盘的文件夹&#xff0c;别的APP也是不能访问的&#…

android 自动下载软件安装程序,手机自动安装软件怎么办

语音内容&#xff1a; 大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 手机自动安装软件的解决方法是&#xff1a; 1、下载lbe大师。 2、下载完成之后&#xff0c;在手机上找到应用图标并且点击打开。 3、在首页的功能区看到有“软…

android手机互联是什么软件,安卓车机互联软件哪个好_安卓手机和大众车机互联软件_安卓互联车机端...

核心提示&#xff1a;安卓车机互联的软件有很多,哪些安卓车机互联软件是我们想要的呢,下面多特小编就跟您推荐几款比较合适的软件或者app给您参考 安卓车机互联的软件有很多,哪些安卓车机互联软件是我们想要的呢,下面多特小编就跟您推荐几款比较合适的软件或者app给您参考 MINI…

安卓手机内存卡测试软件,安卓手机硬件检测软件

楼主你好&#xff0c;这里推荐安兔兔吧&#xff0c;安兔兔性能评测算是现在比较权威的安卓性能测是软件&#xff0c;楼主可以用这个检测手机性能。 超级兔子系统评测AnTuTu Benchmark是一个专门给Android设备的手机、平板电脑硬体打分(跑分)的软体&#xff0c;它能一键运行完整…

android 手机 基站定位软件,安卓手机基站+GPS定位源码

这是安卓手机基站GPS定位源码下载&#xff0c;androidGPS及WIFI基站定位坐标源码&#xff0c;经典Android源码资料&#xff0c;独家提供&#xff0c;欢迎下载&#xff01;&#xff01;&#xff01; 软件介绍 package com.maxtech.common.gps; import com.maxtech.common.gps.Gp…

安卓防止手机休眠软件_Caffeinate app下载-手机防休眠工具Caffeinate下载v3.3.3 安卓版-西西软件下载...

Caffeinate是一款免费的安卓手机防休眠工具&#xff0c;虽然手机内置的手机屏保功能可以设置亮屏时间&#xff0c;不过有时候系统默认的时间是不够的。这款Caffeinate可以让你的手机继续点亮五分钟&#xff0c;自己设置循环次数。 软件介绍&#xff1a; Caffeinate 是一款在 An…