【算法|动态规划No.29】leetcode132. 分割回文串 II

news2024/12/29 9:22:39

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【LeetCode】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。
在这里插入图片描述

点击直接跳转到该题目

目录

  • 1️⃣题目描述
  • 2️⃣题目解析
  • 3️⃣解题代码

1️⃣题目描述

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

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

示例1:

输入:s = “aab”
输出:1
解释:只需一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。

示例2:

输入:s = “a”
输出:0

示例3:

输入:s = “ab”
输出:1

注意:

  • 1 <= s.length <= 2000
  • s 仅由小写英文字母组成

2️⃣题目解析

状态表示:

  • dp[i]表示区间[0,i]之间最长的子串的最少分割次数。

状态转移方程如下:
在这里插入图片描述

3️⃣解题代码

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;

        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];
    }
};

最后就顺利通过啦!!!

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

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

相关文章

022-第三代软件开发-QCustomPlot核心迁移

第三代软件开发-QCustomPlot核心迁移 文章目录 第三代软件开发-QCustomPlot核心迁移项目介绍先说点GitHub CopilotQCustomPlot核心迁移QQuickPaintedItemXXX_QCustomChart 关键字&#xff1a; Qt、 Qml、 QCustomPlot、 GitHub Copilo、 关键字5 项目介绍 欢迎来到我们的 …

Leetcode—2331.计算布尔二叉树的值【简单】

2023每日刷题&#xff08;六&#xff09; Leetcode—2331.计算布尔二叉树的值 递归实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool evaluateTree(struct TreeNod…

计算机网络_网络层概述

4.1 网络层概述 4.1.1 一.分组转发和路由选择 网络层的主要任务就是将分组从源主机经过多个网络和多段链路传输到目的主机&#xff0c;可以将该任务划分为分组转发和路由选择两种重要的功能。 注释:A发送到B,从1端口进入. 如何得知是从2还是从3中转发出去呢?--------->这…

M4内核启动全过程(从零写代码,不用任何库,深入分析启动过程和函数调用规则)

引言 玩过stm32的小伙伴&#xff0c;应该知道&#xff0c;在使用的keil工程里面有一个start.s的启动文件&#xff08;网上关于这个启动文件的分析很多&#xff0c;本文不是讲解启动文件的文字&#xff0c;不打算具体讲解这个文件的内容&#xff09;。start.s文件是芯片复位、启…

微信小程序-微信授权登录

前言 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识&#xff0c;快速建立小程序内的用户体系 一.微信授权登录工作流程 1.理论叙述 触发授权登录: 用户在小程序中触发登录操作&#xff0c;通常通过点击登录按钮或执行相关操作。 授权弹窗: 小程序弹…

python树结构包treelib入门及其计算应用

树是计算机科学中重要的数据结构。例如决策树等机器学习算法设计、文件系统索引等。创建treelib包是为了在Python中提供树数据结构的有效实现。 Treelib的主要特点包括&#xff1a; 节点搜索的高效操作。支持常见的树操作&#xff0c;如遍历、插入、删除、节点移动、浅/深复制…

【Ascend C算子开发(入门)】——Ascend C编程模式与范式

Ascend C编程模型与范式 1.并行计算架构抽象 Ascend C编程开发的算子是运行在AI Core上的&#xff0c;所以我们需要了解一下AI Core的结构。AI Core主要包括计算单元、存储单元、搬运单元。 计算单元包括了三种计算资源&#xff1a;Scalar计算单元&#xff08;执行标量计算&…

登上抖音同城热搜榜:如何让你的短视频成为焦点?

登上抖音同城热搜榜的首要前提是紧跟潮流&#xff0c;捕捉热点。热点通常具有时效性、话题性和关注度&#xff0c;能够迅速吸引人们的注意力。要想捕捉热点&#xff0c;你需要关注新闻、社交媒体和抖音热门话题&#xff0c;时刻关注大众关心的问题。例如&#xff0c;近期热门的…

rabbitMQ(3)

RabbitMq 交换机 文章目录 1. 交换机的介绍2. 交换机的类型3. 临时队列4. 绑定 (bindings)5. 扇形交换机&#xff08;Fanout &#xff09; 演示6. 直接交换机 Direct exchange6.1 多重绑定6.2 direct 代码案例 7. 主题交换机7.1 Topic 匹配案例7.2 Topic 代码案例 8. headers 头…

【力扣每日一题】2023.10.22 做菜顺序

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一个数组表示每个菜的满意度&#xff0c;我们可以指定做哪些菜以及做的顺序&#xff0c;需要我们凑到一个系数的最大值&#xff0c…

第三章 内存管理 十五、内存映射文件

目录 一、传统的文件访问方式 二、内存映射文件 1、方便文件的访问 2、实现文件数据的共享 三、总结 一、传统的文件访问方式 二、内存映射文件 1、方便文件的访问 2、实现文件数据的共享 三、总结

教你注册chrome开发者账号,并发布chrome浏览器插件。

本篇文章主要讲解&#xff0c;注册chrome开发者账号&#xff0c;及发布chrome浏览器插件的流程。包含插件的打包和上传。 日期&#xff1a;2023年10月22日 作者&#xff1a;任聪聪 一、前提准备&#xff1a;注册chrome开发者账号 说明&#xff1a;注册需要5美元&#xff0c;一…

Qt界面容器:Widget、 Frame、分组框、滚动区、工具箱、选项卡小部件、堆叠小部件控件精讲

​Qt 界面设计容器简介 Qt中常用的容器控件, 包括: Widget, Frame, Group Box, Scroll Area, Tool Box, Tab Widget, Stacked Widget。 QWidget 这个类是所有窗口类的父类, 可以作为独立窗口使用, 也可以内嵌到其它窗口中使用。 头文件: #include <QWidget> qmake: QT…

按键控制LED灯亮灭

按键原理图&#xff1a;按键选用PE4 创建两个文件一个.c文件一个.h文件来写按键的代码 .c文件 #include "Key.h"void Key_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode GPIO_M…

python astra相机驱动问题

报错问题&#xff1a; openni.utils.OpenNIError: (OniStatus.ONI_STATUS_ERROR, bDeviceOpen using default: no devices found, None) 解决办法&#xff1a; 1、从sdk中拷贝文件 2、修改openni源码 3、执行测试程序 from openni import openni2 import numpy as np impor…

基于驾驶训练优化的BP神经网络(分类应用) - 附代码

基于驾驶训练优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于驾驶训练优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.驾驶训练优化BP神经网络3.1 BP神经网络参数设置3.2 驾驶训练算法应用 4.测试结果…

【C/C++笔试练习】初始化列表、构造函数、析构函数、两种排序方法、求最小公倍数

文章目录 C/C笔试练习1. 初始化列表&#xff08;1&#xff09;只能在列表初始化的变量 2.构造函数&#xff08;2&#xff09;函数体赋值&#xff08;3&#xff09;构造函数的概念&#xff08;4&#xff09;构造函数调用次数&#xff08;5&#xff09;构造函数调用次数&#xff…

自然语言处理---RNN经典案例之使用seq2seq实现英译法

1 seq2seq介绍 1.1 seq2seq模型架构 seq2seq模型架构分析&#xff1a; seq2seq模型架构&#xff0c;包括两部分分别是encoder(编码器)和decoder(解码器)&#xff0c;编码器和解码器的内部实现都使用了GRU模型&#xff0c;这里它要完成的是一个中文到英文的翻译&#xff1a;欢迎…

数据库MongoDB

MongoDB记录是一个文档&#xff0c;由一个字段和值对组成的数据结构&#xff0c;文档类似于JSON对象。 一个文档认为就是一个对象&#xff0c;字段的数据类型是字符型&#xff0c;值除了使用基本类型外&#xff0c;还可以包括其他文档&#xff0c;普通数组和文档数组。 一、…

Python —— UI自动化之使用JavaScript进行元素点亮、修改、点击元素

1、JavaScript点亮元素 在控制台通过JavaScript语言中对元素点亮效果如下&#xff1a; 将这个语句和UI自动化结合&#xff0c;代码如下&#xff1a; locator (By.ID,"kw") # 是元组类型 web_element WebDriverWait(driver,5,0.5).until(EC.visibility_of_eleme…