代码随想录算法训练营第五十七天 | 回文序列
● 今日学习的文章链接和视频链接
● 看到题目的第一想法
常练常新兄弟们
● 看完代码随想录之后的想法
棒棒
● 实现过程中遇到哪些困难
最长
● 解题代码
-
点击查看代码
class Solution { public int countSubstrings(String s) { if(s.length() == 1) return 1; boolean[][] dp = new boolean[s.length()][s.length()]; int result = 0; for (int i = 0; i < s.length(); i++) { for (int j = 0; j < s.length(); j++) { dp[i][j] = false; } } for (int i = s.length() - 1; i >= 0 ; i--) { for (int j = i; j < s.length(); 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; } } -
点击查看代码
class Solution { public int longestPalindromeSubseq(String s) { int[][] dp = new int[s.length()][s.length()]; for (int i = 0; i < s.length(); i++) dp[i][i] = 1; for (int i = s.length() - 1; i >= 0; i--) { for (int j = i + 1; j < s.length(); 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][s.length()-1]; } }
● 今日收获,学习时长
今日收获:回文子串
学习时长:1h
浙公网安备 33010602011771号