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

【LeetCode】094. 分割回文串II

文章目录

  • 1. 解题思路
    • 1.1 创建dp表
    • 1.2 状态转移方程
    • 1.3 提前求出所有子串是否是回文串
  • 2. 整体代码

1. 解题思路

1.1 创建dp表

这道题我们使用动态规划的方法来解,首先创建一个大小为字符串长度的dp表。dp[i] 表示 s[0, i] 的字符串最小划分多少次可以全划分为回文串。

1.2 状态转移方程

求状态转移方程,我们要考虑两种情况。s[0, i] 的字符串是回文串和不是回文串的情况。

注意,这里假设我们已经知道了哪段字符串是不是回文串,至于是如何知道的后面会说。

  • 如果s[0, i]是回文串,那么问题很简单,不用切割就行,即dp[i] = 0;
  • 如果s[0, i]不是回文串,我们要新增一个变量 j ,j 的范围为 (0, i],这里说明一些j的边界情况,j 要大于0的原因是 j 为0的情况即不用分割s[0, i]的情况(即s[0, i]为回文串的情况),j 为 i 的情况即 s[0, i-1] 中找不到从0开始且为回文串的情况。用这个 j 变量,我们遍历 j 的情况,j 是小于等于 i 的,那么 dp[j-1] 的值我们是知道的。如果从 j 到 i 的字符串是回文串,那么我们就令 dp[i] = min(dp[i], dp[j - 1] + 1); 遍历所有 j 的情况,就能求出 dp[i] 的最小值了。

在这里插入图片描述

1.3 提前求出所有子串是否是回文串

这个我在之前的博客就已经讨论过了,具体可见这篇文章。

2. 整体代码

在这里插入图片描述

class Solution {
public:int minCut(string s) {int n = s.size();// 求出所有子串是否为回文串vector<vector<bool>> isPal(n, vector<bool>(n));for (int i = n - 1; i >= 0; --i)for (int j = i; j < n; ++j)if (s[i] == s[j]) isPal[i][j] = i + 1 < j ? isPal[i+1][j-1] : true;// 创建dp表,由于是求最小值,可以先将所有位置初始化为最大vector<int> dp(n, INT_MAX);  for (int i = 0; i < n; ++i){if (isPal[0][i]) dp[i] = 0;else{for (int j = 1; j <= i; ++j)if (isPal[j][i]) dp[i] = min(dp[i], dp[j-1] + 1);}}return dp[n-1];}
};

相关文章:

【LeetCode】094. 分割回文串II

文章目录 1. 解题思路1.1 创建dp表1.2 状态转移方程1.3 提前求出所有子串是否是回文串 2. 整体代码 1. 解题思路 1.1 创建dp表 这道题我们使用动态规划的方法来解&#xff0c;首先创建一个大小为字符串长度的dp表。dp[i] 表示 s[0, i] 的字符串最小划分多少次可以全划分为回文…...

CBCGPRibbon 添加背景图片

resource.h中声明资源的ID&#xff1a;ID_RIBBON_BACKIMAGE rc文件中添加png图片路径&#xff1a; ID_RIBBON_BACKIMAGE PNG DISCARDABLE "res\\bkribbon.png" 代码中添加下测&#xff1a; //添加背景图片 m_wndRibbonBar.SetBackgroundImage(ID_RIB…...

无涯教程-Perl - last 语句函数

当在循环内遇到 last 语句时&#xff0c;循环立即终止&#xff0c;程序控制在循环后的下一条语句处恢复。您可以为LABEL提供最后一个语句&#xff0c;其中LABEL是循环的标签。 last 语句可以在嵌套循环内使用&#xff0c;如果未指定LABEL&#xff0c;则该语句将适用于最近的循环…...

网络安全 Day13-Linux三剑客awk知识

Linux三剑客awk知识 1. awk 介绍2. awk 语法3. 练习 1. awk 介绍 awk 是一门语言, 也是一个命令,Linux 有三剑客命令: grep/sed/awk三剑客的特长 grep 过滤内容sed 取行awk 取列 2. awk 语法 取列 取第一列文件($1): awk {print $1} 文件指定分隔符为文件: awk -F "指…...

java讲解Spring Boot配置文件级别 相互覆盖关系 解决一方不愿意给数据库密码 一方不愿意给源码时 数据库配置问题

前面 我们讲过Spring Boot 修改临时变量的方式 但另一个场景 就是 我们 在本地开发环境 用的是一个配置 但如果项目经理上线 他想改这些配置 怎么弄呢 特别是数据库之类的配置 很多线上是不太一样的 那么 我们先看一个比较基本的方法 在配置文件的同目录下创建一个目录 叫 con…...

点击表格行高亮

css中三元表达式 :class"[activeIndex index ? color : , item]"点击行高亮 <div click"actvied(index)" :class"[activeIndex index ? color : , item]"v-for"(item, index) in tableData" :key"index">{{ item…...

基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码、数据、讲解 &#x1f4a5;1 概述 由于能源的日益匮乏&#xff0c;电力需求的不断增长等&#xff0c;配电网中分布式能源渗透率不断提高&#xff0c;且逐渐向主动配电网方…...

零代码爬虫平台SpiderFlow的安装

什么是 Spider Flow &#xff1f; Spider Flow 是一个高度灵活可配置的爬虫平台&#xff0c;用户无需编写代码&#xff0c;以流程图的方式&#xff0c;即可实现爬虫。该工具支持多数据源、自动保存至数据库、任务监控、抓取 JS 动态渲染页面、插件扩展&#xff08;OCR 识别、邮…...

Java 与其他编程语言:比较分析

Java 擅长可移植性和可靠性&#xff0c;Python 擅长通用性和简单性&#xff0c;JavaScript 擅长 Web 开发&#xff0c;C 擅长性能&#xff0c;Go 擅长效率。 在广阔的软件开发世界中&#xff0c;选择正确的编程语言对于任何项目的成功都至关重要。Java 是一种以其多功能性和可移…...

Linux性能分析工具介绍(二)--内存、进程、磁盘、IO分析

目录 一、引言 二、Linux性能分析工具介绍 ------>2.1、进程 ------>2.2、内存 ------>2.3、磁盘 ------>2.4、IO 一、引言 本章从内存、IO、进程的角度,分析linux系统的性能 二、Linux性能分析工具介绍 2.1、进程 2.1.1、top top命令可以动态查看进程…...

海外热门地区/国家常见主体证件示例

海外热门地区/国家常见主体证件示例&#xff08;本页面内容较多&#xff0c;你可以通过CtrlF搜索&#xff09; Overseas Popular Areas / Countries Examples of Common certificates &#xff08;This page has more content, you can search by CtrlF&#xff09; 中国香港…...

【阵列信号处理】空间匹配滤波器、锥形/非锥形最佳波束成形器、样本矩阵反演 (SMI) 研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

使用MPU6050计算方向盘角度

我给你们作了榜样、叫你们照着我向你们所作的去作。 ——【约翰福音13:15】 1.前言 前段时间接到一个项目需求&#xff1a;使用现有的陀螺仪MPU6050实现计算当前车辆的方向盘角度。 2.需求分析 MPU6050可获取三轴角速度和三轴加速度&#xff0c;并通过算法可以获得横滚角、…...

区块链实验室(13) - 在PBFT中节点的度与其流量的特征

前面若干实验说明了PBFT的耗时、流量与度的特征&#xff0c;见 区块链实验室(10) - 实例说明PBFT的共识过程, 区块链实验室(11) - PBFT耗时与流量特征, 区块链实验室(12) - 网络拓扑对PBFT共识流量的影响 同样的实验方案&#xff0c;在100个节点构成的无标度网络中完成100次交…...

C++——文件操作

一、文本文件 C中输入输出是通过流对象进行操作&#xff0c;对于文件来说写文件就是将内容从程序输出到文件&#xff0c;需要用到写文件流ofstream&#xff1b;而读文件就是将内容从文件输入到程序&#xff0c;需要用到读文件流ifstream&#xff1b;这两个文件流类都包含在头文…...

channel通道笔记

channel通道笔记 介绍 语法 1.一般使用make创建channel(常用) c : make(chan datatype),datatype是数据类型 2.直接显示声明,创建的值为空,一般没有太大意义 var c chan datatype 三种定义写法: 既可以收数据又可以发数据:chan datatype只可以收数据:chan <- datatype只可…...

无涯教程-Lua - 面向对象

面向对象编程(OOP)是现代编程时代中使用最广泛的编程技术之一。 OOP的特征 类(Class) - 类是用于创建对象的可扩展模板。 对象(Objects) - 它是类的实例&#xff0c;并为其分配了单独的内存空间。 继承(Inheritance) - 这是一个概…...

Java中的IOUtils是什么?

Java中的IOUtils是一个工具类&#xff0c;用于简化文件和流的操作。它提供了一些常用的方法&#xff0c;如复制文件、读取文件、写入文件等。 下面是一个简单的示例&#xff0c;演示如何使用IOUtils来复制文件&#xff1a; import org.apache.commons.io.FileUtils; import j…...

电源板(220V转3.3V)调试问题总

目录 现象&#xff1a; 问题可能的影响&#xff1a; 排查过程&#xff1a; 1.测试EC3&#xff0c;C2都在6V左右&#xff0c; 2.怀疑变压器的问题。 2.怀疑原边反馈控制芯片的问题。 3.怀疑后级电路的问题。 现象&#xff1a; 电源板输出3.28V输出正常。 但是测试前级电压…...

【webpack】一些零碎的知识点记录:eslint配置、source-map配置、devServer配置

文章目录 前言eslint安装配置设置规则 devtool设置js.map文件使用模式解释文件说明建议方案 devServer安装配置 前言 有些知识点不知道咋归类&#xff0c;就先暂时放在同一个文章里了。这里只记录配置方式&#xff0c;配置的东西是什么就不过多解释了&#xff0c;因为一般需要…...

NGA论坛优化脚本完整指南:5分钟打造高效浏览体验

NGA论坛优化脚本完整指南&#xff1a;5分钟打造高效浏览体验 【免费下载链接】NGA-BBS-Script NGA论坛增强脚本&#xff0c;给你完全不一样的浏览体验 项目地址: https://gitcode.com/gh_mirrors/ng/NGA-BBS-Script 如果你经常在NGA论坛上冲浪&#xff0c;那么这款NGA论…...

Taotoken多模型聚合在批量内容生成任务中的稳定性观察

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken多模型聚合在批量内容生成任务中的稳定性观察 1. 任务背景与挑战 在涉及大规模、长时间运行的内容生成任务中&#xff0c…...

用Arduino Nano和MPU6050做个‘防抖云台’:PID调参实战,告别手抖视频

用Arduino Nano和MPU6050打造防抖云台&#xff1a;从硬件搭建到PID调参全指南 在短视频和Vlog盛行的时代&#xff0c;稳定的画面已经成为内容创作者的刚需。专业级稳定器动辄上千元的价格让许多入门玩家望而却步。其实&#xff0c;只需一块Arduino Nano开发板、一个MPU6050传感…...

OpenISP 模块拆解 · 第7讲:去马赛克 (CFA)

OpenISP 模块拆解 第7讲&#xff1a;去马赛克 (CFA) 模块作用 CFA 插值也叫 demosaic&#xff0c;是把单通道 Bayer RAW 转成三通道 RGB 的关键模块。每个传感器像素只采集 R/G/B 之一&#xff0c;CFA 要为每个位置估计缺失的两个颜色通道。 openISP 实现 源码类名为 CFA(img,…...

AI从业者的理财攻略:如何用AI技术实现被动收入

AI时代&#xff0c;软件测试从业者的新理财机遇在人工智能技术飞速发展的当下&#xff0c;软件测试行业正经历着深刻变革。传统的手工测试逐渐被自动化测试、AI驱动的测试所取代&#xff0c;这既给软件测试从业者带来了挑战&#xff0c;也创造了新的机遇。对于软件测试从业者而…...

python学习笔记 | 11.2、面向对象高级编程-使用@property

一、先搞懂&#xff1a;我们为什么要用 property&#xff1f; 1. 原始问题 直接给对象赋值&#xff0c;没法检查数据是否合法&#xff1a; class Student:passs Student() s.score 9999 # 成绩不可能是9999&#xff0c;完全不合理&#xff01;2. 笨办法解决&#xff08;太麻…...

为内部ai工具平台集成taotoken实现多模型灵活切换的方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为内部AI工具平台集成Taotoken实现多模型灵活切换的方案 在企业内部开发AI工具平台时&#xff0c;一个常见的挑战是如何为不同的业…...

墨水屏高效开发:架构、开源库与实战优化指南

1. 项目概述&#xff1a;为什么墨水屏开发值得深挖&#xff1f;如果你接触过电子墨水屏&#xff0c;第一印象可能是“反应慢”、“刷新有残影”、“只能显示黑白”。确实&#xff0c;相比我们手机、电脑上那些流光溢彩的LCD或OLED屏幕&#xff0c;墨水屏在响应速度和色彩表现上…...

独立开发者如何借助Taotoken管理多个AI侧项目

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何借助Taotoken管理多个AI侧项目 作为一名独立开发者&#xff0c;同时维护多个使用大模型的小型项目是常态。你可能有…...

ModusToolbox 3.1.0 保姆级安装与配置指南(Windows版,含GitHub访问加速方案)

ModusToolbox 3.1.0 高效安装与深度配置实战&#xff08;Windows环境&#xff09; 对于嵌入式开发者而言&#xff0c;英飞凌的ModusToolbox无疑是一把打开物联网世界的金钥匙。然而&#xff0c;当这把钥匙遇到网络访问的铜墙铁壁时&#xff0c;许多开发者的热情往往被消磨在无尽…...