力扣题解(分割回文串II)

132. 分割回文串 II

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是

回文串

返回符合要求的 最少分割次数 

思路:

规定dp[i]是以i位置为最后一个元素,(0-i)的最少分割次数,此时需要从(0-i-1)中找出一个j,使得(j,i)是一个回文串,这样的话可以看成实在j位置切了一刀,然后(0-j-1)的最少切割存放在dp[j-1]中,则dp[i]=dp[j-1]+1(加一是在j位置又切了一刀)。

细节:由于j是默认从0位置开始计算的,则当j=0时,即(0,i)本身可以构成一个回文串,而j-1是下标-1,dp中没有下标为-1的元素,因此需要单独说明此时dp[i]=0(因为整体是一个回文串,因此可以一刀不切),如果想和j等于别的值保持一致,则dp需要开辟N+1个空间,第一个空间dp[0]=-1,dp[i]表示已i-1位置元素为最后一个元素切割的最小次数。

class Solution {
public:bool judge(vector<int>&dp1, vector<int>&dp2, int left, int right){if ((right -left+1) % 2 == 0)return dp2[(right +left) / 2] >= right - left+1;elsereturn dp1[(right + left) / 2] >= right - left+1;}int minCut(string s) {int n = s.size();vector<int>dpone(n, 1);vector<int>dptwo(n, 0);for (int i = 0; i < n; i++){int j = 1;while (i - j >= 0 && i + j < n && s[i - j] == s[i + j]){dpone[i] += 2;j++;}j = 0;while (i - j >= 0 && i + 1 + j < n && s[i - j] == s[i + j + 1]){dptwo[i] += 2;j++;}}vector<int>dp(n, INT_MAX);dp[0] = 0;for (int i = 1; i < n; i++){for (int j = 0; j <= i; j++){if (judge(dpone, dptwo, j, i)){if (j == 0)dp[i] = 0;elsedp[i] = min(dp[j-1] + 1, dp[i]);}}}return dp.back();}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46202.shtml

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

相关文章

硅谷并购中的牙刷测试

注&#xff1a;机翻&#xff0c;未校对。 In Silicon Valley, Mergers Must Meet the Toothbrush Test By David Gelles August 17, 2014 9:22 pm Credit Liz Grauman/The New York Times MOUNTAIN VIEW, Calif. — When deciding whether Google should spend millions or …

DP讨论——简单工厂模式

学而时习之&#xff0c;温故而知新。 敌人出招&#xff08;使用场景&#xff09; 不同的业务场景下要创建不同的对象&#xff0c;但是这些对象又有共同的特点。如何复用代码呢&#xff1f;你会想到&#xff0c;这些对象可以抽象出一个基类/抽象类就行了&#xff0c;那么随着业…

docker安装nginx并配置https

参考 docker安装nginx并配置https-腾讯云开发者社区-腾讯云 (tencent.com) 证书的生成 参见&#xff1a;SpringBoot项目配置HTTPS接口的安全访问&#xff08;openssl配置&#xff09;_配置接口访问-CSDN博客 步骤 1: 拉取Nginx镜像 docker pull nginx 好使的镜像如下&#x…

【AI】目标检测算法【R-CNN:Regions with CNN features】

1. 常用目标检测算法介绍 目标检测是计算机视觉领域的一个重要分支&#xff0c;它旨在识别并定位图像中的各种对象。以下是一些流行的目标检测算法&#xff1a; 1.1 二阶段目标检测算法 R-CNN (Regions with CNN features): 通过选择性搜索算法选取候选区域&#xff0c;然后…

vue3-vite-pinia模板

模板说明 下载 git clone https://github.com/AIxiaoHanBao/vue-template.gitmodule参数 node版本 16 UI组件库 element-plus 持久化 pinia 网络请求 axios 路由 vue-router 使用说明 权限管理目录access资源目录assets组件目录components页面目录pages网络请求目录re…

【AI原理解析】—对抗学习(AL)原理

目录 一、基本原理 二、核心模型 三、对抗性损失函数 四、训练过程 五、对抗学习的优势 六、对抗学习的挑战与解决方案 七、对抗学习的应用 八、未来展望 一、基本原理 对抗学习的核心思想是通过两个模型的相互对抗&#xff0c;使得生成模型&#xff08;Generator&…

AI agents 印象

1、flowise ai 拖拉方式用llm创建AI agents Flowise - Low code LLM Apps Builder GitHub - FlowiseAI/Flowise: Drag & drop UI to build your customized LLM flow 2、coze 也是用拖拉方式&#xff0c;还可以多Agents 引入GPT4,Claude&#xff0c;Gemin最好的模型 3、…

【数学建模】——数学规划模型

目录 一、线性规划&#xff08;Linear Programming&#xff09; 1.1 线性规划的基本概念 1.2 线性规划的图解法 模型建立&#xff1a; 二、整数规划&#xff08;Integer Programming&#xff09; 2.1 整数规划的基本概念 2.2 整数规划的求解方法 三、非线性规划&#x…

LeetCode刷题笔记第3011题:判断一个数组是否可以变为有序

LeetCode刷题笔记第3011题&#xff1a;判断一个数组是否可以变为有序 题目&#xff1a; 想法&#xff1a; 使用冒泡排序进行排序&#xff0c;在判断大小条件时加入判断二进制下数位为1的数目是否相同&#xff0c;相同则可以进行互换。最后遍历数组&#xff0c;相邻两两之间是…

Java中实现一维数组逆序交换的完整解决方案

引言 ❤❤点个关注吧~~编程梦想家&#xff08;大学生版&#xff09;-CSDN博客 在日常编程中&#xff0c;处理数组时经常会遇到需要逆序交换数组元素的情况。逆序交换即是将数组的第一个元素与最后一个元素交换&#xff0c;第二个元素与倒数第二个元素交换&#xff0c;依此类推…

浏览器出现 502 Bad Gateway的原理分析以及解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法 前言 此类问题主要作为疑难杂症 1. 问题所示 2. 原理分析 502 Bad Gateway 错误表示服务器作为网关或代理时&#xff0c;从上游服务器收到了无效的响应 通常出现在充当代理或网关的网络服务器上&#xff0c;例如 Nginx、Apache…

【LeetCode】有效的括号

目录 一、题目二、解法完整代码 一、题目 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 …

聚观早报 | 网宿科技推出边缘AI网关;AMD再收购AI公司

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 7月12日消息 网宿科技推出边缘AI网关 AMD再收购AI公司 谷歌Pixel 9系列将配超声波指纹 三星Galaxy Z Fold6亮相 …

.Net Core 视图文件编译成DLL

在.NET Core中&#xff0c;视图文件&#xff08;如Razor视图&#xff09;并不直接编译成DLL&#xff08;动态链接库&#xff09;文件&#xff0c;但它们确实会被预编译或编译成中间形式&#xff0c;以便在应用程序运行时能够高效地执行。 对于ASP.NET Core MVC或Razor Pages应…

【HTML入门】第十二课 - iframe框架

在早期没有出现Vue和React之前呢&#xff0c;做管理系统&#xff0c;iframe是非常普遍的技术。比如管理系统左侧有非常多的菜单&#xff0c;然后点击菜单后&#xff0c;右边就要展现不同的页面。 又或者呢&#xff0c;我们看一些网站&#xff0c;他们侧边展示着五彩绚烂的广告&…

Linux C++ 051-设计模式之中介者模式

Linux C 051-设计模式之中介者模式 本节关键字&#xff1a;Linux、C、设计模式、中介者模式 相关库函数&#xff1a; 概念 中介者模式&#xff08;Mediator&#xff09;&#xff0c;又叫调停者模式&#xff0c; 用一个中介对象来封装一系列的对象交互。中介者 使各对象不需要…

2024年上半年信息系统项目管理师——综合知识真题题目及答案(第1批次)(1)

2024年上半年信息系统项目管理师 ——综合知识真题题目及答案&#xff08;第1批次&#xff09;&#xff08;1&#xff09; 第1题&#xff1a;&#xff08;&#xff09;通过财务、客户、内部运营、学习与成长4个角度&#xff0c;将组织战略目标逐层分解转化为细化指标&#xff…

k8s集群新增节点

目前集群状态 如K8S 集群搭建中规划的集群一样 Masternode01node02IP192.168.100.100192.168.100.101192.168.100.102OSCent OS 7.9Cent OS 7.9Cent OS 7.9 目前打算新增节点node03 Masternode01node02node03IP192.168.100.100192.168.100.101192.168.100.102192.168.100.1…

力扣经典题目之->删除有序数组中的重复项讲解 的讲解与实现

一&#xff1a;题目 二&#xff1a;思路讲解 第一步&#xff1a;创建两个下标&#xff0c;一个是第一个元素的&#xff08;start0&#xff09;&#xff0c;一个是第二个元素的&#xff08;end1&#xff09; 第二步&#xff1a; a&#xff1a;end移动&#xff0c;直到遇到不等…

Arduino PID整定

Arduino PID整定 Tuning an Arduino PID Introduction to Tuning an Arduino PID 例如&#xff0c;我们可能想把一箱水加热到华氏 100 度。 我们需要能够在不同的条件下实现这一目标&#xff0c;例如房间的环境&#xff08;周围&#xff09;温度。 此外&#xff0c;我们可能会…