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

【代码随想录Day45】动态规划Part13

647. 回文子串

题目链接/文章讲解:代码随想录
视频讲解:动态规划,字符串性质决定了 DP 数组的定义 | LeetCode:647.回文子串_哔哩哔哩_bilibili

class Solution {public int countSubstrings(String s) {// 将字符串转换为字符数组,便于后续处理char[] chars = s.toCharArray();int len = chars.length;  // 获取字符串的长度// 创建一个二维布尔数组,用于记录子串是否为回文boolean[][] dp = new boolean[len][len];int result = 0;  // 用于计数回文子串的数量// 从字符串的最后一个字符开始向前遍历for (int i = len - 1; i >= 0; i--) {// 从当前字符位置向后遍历for (int j = i; j < len; j++) {// 如果两个字符相等if (chars[i] == chars[j]) {// 情况一:字符间隔为0(相同的字符)或情况二:字符间隔为1(两个相同字符组成的子串)if (j - i <= 1) {result++;  // 计数加一dp[i][j] = true;  // 标记为回文}// 情况三:判断子串中间部分是否为回文else if (dp[i + 1][j - 1]) {result++;  // 计数加一dp[i][j] = true;  // 标记为回文}}}}return result;  // 返回回文子串的总数量}
}

516.最长回文子序列

题目链接/文章讲解:代码随想录
视频讲解:动态规划再显神通,LeetCode:516.最长回文子序列_哔哩哔哩_bilibili

class Solution {public int longestPalindromeSubseq(String s) {// 将字符串转换为字符数组char[] chars = s.toCharArray();int len = chars.length;// 创建一个二维数组 dp,用于存储子问题的解int[][] dp = new int[len][len];// 初始化 dp 数组,所有单字符的回文子序列长度为 1for (int i = 0; i < len; i++) {dp[i][i] = 1;  // 单个字符的回文子序列长度为 1}// 从后向前遍历字符串for (int i = len - 1; i >= 0; i--) {// 从 i+1 开始遍历,确保 j 始终大于 ifor (int j = i + 1; j < len; j++) {// 如果当前字符相同,则找到一个回文子序列if (chars[i] == chars[j]) {// 当前字符相同,回文长度为 dp[i + 1][j - 1] + 2dp[i][j] = dp[i + 1][j - 1] + 2;} else {// 如果字符不同,取去掉当前字符后得到的最大回文子序列长度dp[i][j] = Math.max(dp[i][j - 1], dp[i + 1][j]);}}}// 返回从字符串开始到结束的最长回文子序列长度return dp[0][len - 1];}
}

动态规划总结篇

总结:代码随想录


http://www.mrgr.cn/news/53229.html

相关文章:

  • 复习:如何理解 React 中的 fiber
  • 一键获取每日股票数据,自动更新,尽在掌握
  • 安全见闻笔记
  • [Gtk] 工程
  • OPENSSL-2023/11/10学习记录-C/C++对称分组加密DES
  • EPS导出DWG存在地物缺失或者没有编码属性的情况
  • float数据分别以int和float类型打印的反汇编分析
  • 【网络协议】之 HTTP 协议详解
  • 简单三步完成 Telegram 生态的 Web3 冷启动
  • 网络通信与并发编程(二)基于tcp的套接字、基于udp的套接字、粘包现象
  • Postman 接口测试
  • 去除视频水印的三种方法,有手就会
  • Vscode+Pycharm+Vue.js+WEUI+django火锅(7) 傍着Copliot战WEUI Picker
  • 1.1 C++语言基础面试问题
  • 试用cursor的简单的记录
  • 力扣困难题汇总
  • OQE-OPTICAL AND QUANTUM ELECTRONICS
  • 掌握高效工作汇报技巧:如何利用即时白板打造完美日报,提升职场影响力
  • C++简易日志系统:打造高效、线程安全的日志记录工具
  • D41【python 接口自动化学习】- python基础之函数