【代码随想录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.mzph.cn/news/882387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软件测试】JUnit

Junit 是一个用于 Java 编程语言的单元测试框架&#xff0c;Selenium是自动化测试框架&#xff0c;专门用于Web测试 本篇博客介绍 Junit5 文章目录 Junit 使用语法注解参数执行顺序断言测试套件 Junit 使用 本篇博客使用 Idea集成开发环境 首先&#xff0c;创建新项目&#…

从零开始实现 C++ 双向链表:深入理解链表底层原理

文章目录 前言&#xff1a;1. 主要数据结构2. 迭代器的实现3. 链表的实现3.1 基本结构3.2 链表的插入与删除3.3 其他成员函数 4. 迭代器操作与遍历链表5. 拷贝构造与赋值运算符6. 总结 前言&#xff1a; 在 C 标准库中&#xff0c;std::list 是一种非常常用的数据结构&#xff…

VUE 仿神州租车-开放平台

项目背景&#xff1a; 神州租车是一家提供汽车租赁服务的公司&#xff0c;其API开放平台为开发者提供了访问神州租车相关服务和数据的接口。用VUE技术来仿照其开发平台。 成果展示&#xff1a; 首页&#xff1a; API文档&#xff1a; 关于我们&#xff1a;

牛只行为及种类识别数据集18g牛只数据,适用于多种图像识别,目标检测,区域入侵检测等算法作为数据集。数据集中包括牛只行走,站立,进食,饮水等不同类型的数据

18g牛只数据&#xff0c;适用于多种图像识别&#xff0c;目标检测&#xff0c;区域入侵检测等算法作为数据集。 数据集中包括牛只行走&#xff0c;站立&#xff0c;进食&#xff0c;饮水等不同类型的数据&#xff0c;可以用于行为检测 数据集中包含多种不同种类的牛只&#xff…

黑盒测试 | 挖掘.NET程序中的反序列化漏洞

通过不安全反序列化漏洞远程执行代码 今天&#xff0c;我将回顾 OWASP 的十大漏洞之一&#xff1a;不安全反序列化&#xff0c;重点是 .NET 应用程序上反序列化漏洞的利用。 &#x1f4dd;$ _序列化_与_反序列化 序列化是将数据对象转换为字节流的过程&#xff0c;字节流可以…

从底层结构开始学习FPGA(15)----时钟结构(通俗版)

目录 0、前言 1、IO Bank和Clock Region(时钟区域)是一个东西吗? 2、时钟输入管脚 3、时钟架构 3.1、全局时钟BUFG 3.2、水平时钟BUFH 3.3、IO时钟BUFIO 3.4、区域时钟BUFR/BUFMR 4、总结 《从底层结构开始学习FPGA》目录与传送门 0、前言 我思来想去,总觉…

基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不…

Maxwell 底层原理 详解

Maxwell 是一个 MySQL 数据库的增量数据捕获&#xff08;CDC, Change Data Capture&#xff09;工具&#xff0c;它通过读取 MySQL 的 binlog&#xff08;Binary Log&#xff09;来捕获数据变化&#xff0c;并将这些变化实时地发送到如 Kafka、Kinesis、RabbitMQ 或其他输出端。…

Java的重载和主要内存区

JAVA的重载 ​ 在Java中&#xff0c;重载&#xff08;Overloading&#xff09;是指在同一个类中可以定义多个同名的方法&#xff0c;但它们的参数列表必须不同。重载可以通过改变参数的数量、类型或者顺序来实现。重载提高了代码的可读性和灵活性。 JAVA重载要满足的条件&…

面经整理 八股 虾皮购物 Java后端开发 上

目录 1.java中的锁机制 什么是可重入锁 锁机制 可重入锁&#xff08;Reentrant Lock&#xff09; 特点&#xff1a; 示例代码&#xff1a; 总结 2.可重入锁的使用场景 1. 递归调用 2. 多线程资源共享 3. 复杂对象的状态管理 4. 保证顺序执行 总结 3.讲一下AQS AQ…

Lua表(Table)

软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua中的表&#xff08;table&#xff09;是一种核心数据结构&#xff0c;它既是数组也是字典&#xff0c;能够存储多种类型的数据&#xff0c;包括数字、字符…

0x3D service

0x3D service 1. 概念2. Request message 数据格式3. Respone message 数据格式3.1 正响应格式3.2 negative respone codes(NRC)4. 示例4.1 正响应示例:4.2 NRC 示例1. 概念 UDS(统一诊断服务)中的0x3D服务,即Write Memory By Address(按地址写内存)服务,允许客户端向服…

Javaweb基础-axios

Axios 是一个基于 Promise 的 HTTP 库&#xff0c;可以用在浏览器和 node.js 中。 GET方法 get请求第一种写法 //后端 Slf4j RestController RequestMapping("/demo") public class DemoController {RequestMapping("/getTest")// 被RequestParam标记的参数…

mysql数据量分库分表

一、分库分表参考阈值 分库分表是解决大规模数据和高并发访问问题的常用策略。虽然没有绝对的阈值来决定何时进行分库分表&#xff0c;但以下是一些参考阈值和考虑因素&#xff0c;可以帮助你做出决策&#xff1a; 1.1 数据量阈值 单表数据行数&#xff1a;当单表的数据行数…

2024年中国工业大模型行业发展研究报告|附43页PDF文件下载

工业大模型伴随着大模型技术的发展&#xff0c;逐渐渗透至工业&#xff0c;处于萌芽阶段。 就大模型的本质而言&#xff0c;是由一系列参数化的数学函数组成的计算系统&#xff0c;且是一个概率模型&#xff0c;其工作机制是基于概率和统计推动进行的&#xff0c;而非真正的理解…

.NET 6 API + Middleware + Audit rail

Request相关的参数。 需要在Program.cs 注入IHttpContextAccessor //Below services used to get tokenservices.AddHttpContextAccessor();services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); public string GetClientIpAddress(){var clientIp _ht…

实现对redis过期键监听案例

开发背景 为了实现当经纪人A提交分佣后如果三天后其他经纪人没有确认分佣就自动确认分佣&#xff0c;如果经纪人A修改分佣后再次提交分佣&#xff0c;时间重置为三天 实现方式 第一步&#xff1a;引入依赖 <dependency> <groupId>redis.clients</groupId> …

aardio 中最重要的控件:自定义控件使用指南

aardio虽然是个小众编程语言&#xff0c;但其在windows下做个小软件生成exe文件&#xff0c;确实方便。只是这个编程语言的生态圈小&#xff0c;文档的详细程度也完全无法和大的编程语言相提并论。今天介绍一下&#xff0c;aardio中的自定义控件如何使用。 这里我们只介绍如何做…

华为高频手撕冲刺

简单题 两数之和 方法一&#xff0c;暴力破解&#xff0c;时间复杂度O(n^2)&#xff0c;空间复杂度O(1) class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:nlen(nums)for i in range(n):for j in range(i1,n):if nums[i]nums[j]target:retur…

python 作业1

任务1: python为主的工作是很少的 学习的python的优势在于制作工具&#xff0c;制作合适的工具可以提高我们在工作中的工作效率的工具 提高我们的竞争优势。 任务2: 不换行 换行 任务3: 安装pycharm 进入相应网站Download PyCharm: The Python IDE for data science and we…