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

【划分型 DP-最优划分】【腾讯笔试压轴】【hard】力扣132. 分割回文串 II

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

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

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

示例 2:
输入:s = “a”
输出:0

示例 3:
输入:s = “ab”
输出:1

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

动态规划

class Solution {
public:int minCut(string s) {int n = s.size();vector<vector<bool>> g(n, vector<bool>(n, true));for(int i = n-1; i >= 0; i--){for(int j = i+1; j < n; j++){g[i][j] = s[i] == s[j] && g[i+1][j-1];}}vector<int> f(n, INT_MAX);for(int j = 0; j < n; j++){if(g[0][j]){f[j] = 0;}else{for(int i = 0; i < j; i++){if(g[i+1][j]){f[j] = min(f[j], f[i] + 1);}}}}return f[n-1];}
};

时间复杂度:O(n^2)
空间复杂度:O(n^2)

这道题最关键的部分是我们要对字符串s进行处理,我们通过一个二维数组来记录字符串的各个部分是否是回文字符串。
我们定义一个二维数组g[i][j]来表示字符串[i…j]这一段是否是回文串。在检查是否是回文串的时候,我们只需要判断s[i]和s[j]是否相等,如果相等的话,那么[i+1,…,j-1]是否是回文串,如果也是的话,就说明g[i][j]是true。在处理回文串的时候,需要注意我们要初始化g[i][j]都为true,这是为了避免额外判断:若初始化为 false,则需要额外处理长度为 1 或 2 的子串,代码的复杂度会增加。初始化为 true 可以确保所有的单字符子串都被认为是回文,代码逻辑更加简洁。

预处理完字符串后,我们定义一个动态数组f[i],他代表字符串[0,…,i]的最小分割次数是多少。我们先遍历j从0到n-1,也就是我们要找出从 0到1,0到2,…,0到(n-1)字符串的最小分割次数是多少。因为我们最终的目的就是求从0到(n-1)的字符串的最小分割次数,那么我们求0到j的最小分割次数就可以从前面的状态转换而来。

那么如何进行状态转换,f[j]如何从之前计算过的状态转换而来?我们这时候遍历下标i,目的是判断从i+1到j这字符串是否是回文,如果是回文的话,那么从0到j这个字符串的最小分割次数,不就是0到i的最小分割次数加上1吗。然后我们不断寻找状态转换后的f[j]的最小值并记录。

最后返回f[n-1]即可。

相关文章:

【划分型 DP-最优划分】【腾讯笔试压轴】【hard】力扣132. 分割回文串 II

给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文串。 返回符合要求的 最少分割次数 。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;1 解释&#xff1a;只需一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子…...

Kubernetes-镜像加速篇-01-加速工具

[友情链接]加速三剑客 镜像加速&#xff1a;https://github.com/DaoCloud/public-image-mirror 二进制文件加速&#xff1a;https://github.com/DaoCloud/public-binary-files-mirror Helm 加速&#xff1a;https://github.com/DaoCloud/public-helm-charts-mirror 二进制文件…...

字母的异位数

做leetcode242题时出现了一个错误&#xff1a; bool isAnagram(string s, string t) {map<char,int> cnt;bool ans true;int lens s.length();int lent t.length();for(int i 0;i < lens;i){cnt[s[i]] 1;cout << cnt[s[i]] << endl;}for(int i 0;i…...

达梦数据库DM Exception字符串截断错误,略坑~

前言 我之前在使用达梦数据库的时候&#xff0c;遇到了很多很多的问题&#xff0c;主要对达梦数据库也不是很熟悉&#xff0c;它的语法和我所熟悉的mysql和postgresql有很大的区别。 今天&#xff0c;讲一下我之前遇到的一个问题。这个问题的起因是用达梦数据库迁移工具&…...

vue实现图片无限滚动播放

本人vue新手菜鸡&#xff0c;文章为自己在项目中遇到问题的记录&#xff0c;如有不足还请大佬指正 文章目录 实现效果代码展示总结 因为刚接触vue&#xff0c;本想着看看能不能用一些element的组件实现图片的轮播效果&#xff0c;尝试使用过element-UI里的走马灯Carouse&#x…...

python爬虫指南——初学者避坑篇

目录 Python爬虫初学者学习指南一、学习方向二、Python爬虫知识点总结三、具体知识点详解和实现步骤1. HTTP请求和HTML解析2. 正则表达式提取数据3. 动态内容爬取4. 数据存储5. 反爬虫应对措施 四、完整案例&#xff1a;爬取京东商品信息1. 导入库和设置基本信息2. 获取网页内容…...

Vivado+Vscode联合打造verilog环境

一、Vivado下载安装 详细参考我另一篇文章&#xff1a; Vivado2022.2下载安装_fpga vivado下载-CSDN博客https://blog.csdn.net/weixin_61081689/article/details/143460790?spm1001.2014.3001.5501 二、Vscode下载安装 详细参考我另一篇文章&#xff1a; VscodeAnacond…...

Python 微服务架构

Python 微服务架构 目录 &#x1f6e0; 微服务架构的基本概念与设计原则⚡ Python 在微服务中的应用&#xff08;Flask、FastAPI等框架&#xff09;&#x1f680; 微服务的自动化部署与运维&#x1f50d; 服务发现与负载均衡&#x1f4ca; 微服务中的日志集中管理与监控&…...

Android JNI 技术入门指南

引言 在Android开发中&#xff0c;Java是一种主要的编程语言&#xff0c;然而&#xff0c;对于一些性能要求较高的场景&#xff08;如音视频处理、图像处理、计算密集型任务等&#xff09;&#xff0c;我们可能需要使用到C或C等语言来编写底层的高效代码。为了实现Java代码与C…...

实在智能受邀出席柳州市智能终端及机器人产业发展合作大会

10 月 27 日至 28 日&#xff0c;由中共柳州市委员会与柳州市人民政府主办的2024柳州市智能终端及机器人产业发展合作大会在柳州莲花山庄隆重举行。大会充分整合各方资源&#xff0c;持续深化与柳州在重大战略规划、重大平台建设、重点产业培育等领域的合作。作为智能体行业的知…...

算法求解(C#)-- 寻找包含目标字符串的最短子串算法

1. 引言 在字符串处理中&#xff0c;我们经常需要从一个较长的字符串中找到包含特定目标字符串的最短子串。这个问题在文本搜索、基因序列分析等领域有着广泛的应用。本文将介绍一种高效的算法来解决这个问题。 2. 问题描述 给定一个源字符串 source 和一个目标字符串 targe…...

AscendC从入门到精通系列(二)基于Kernel直调开发AscendC算子

本次主要讨论下AscendC算子的开发流程&#xff0c;基于Kernel直调工程的算子开发。 1 AscendC算子开发的基本流程 使用Ascend C完成Add算子核函数开发&#xff1b; 使用ICPU_RUN_KF CPU调测宏完成算子核函数CPU侧运行验证&#xff1b; 使用<<<>>>内核调用符…...

DAO模式的理解

目录 DAO模式 含义 DAO模式 的理解 分层思维 分层含义 分层目的 dao层 dao包&#xff08;对接的是操作数据库的接口&#xff09; dao包下lmpl 包&#xff08;dao包中接口的实现类&#xff09; 补充 1 你创建的实体类需要和数据库中建的表一一对应。 总结 DAO模式 含义…...

使用GitHub Actions实现CI/CD流程

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用GitHub Actions实现CI/CD流程 GitHub Actions 简介 创建仓库 配置工作流 示例工作流文件 触发和运行工作流 部署应用 最佳实…...

机器人助力Bridge Champ游戏:1.4.2版本如何提升玩家体验

在Bridge Champ游戏中&#xff0c;机器人扮演着桥牌游戏的“无名英雄”角色&#xff0c;默默地提升玩家体验。凭借智能化的设计&#xff0c;这些机器人不仅能够陪练&#xff0c;也大大提升了比赛的流畅度与趣味性。 Bridge Champ是什么 Bridge Champ是一个基于Ignis公链的在线…...

滑动窗口(单调队列维护窗口)-acwing

题目&#xff1a; 154. 滑动窗口 - AcWing题库 代码&#xff08;删除队列窗口多余的>单调队列&#xff09; 判断最值是否滑出窗口可以放在 入队的后面。 但是&#xff0c;判断&#xff0c;准备入队元素比前面小&#xff0c;要从队尾出队&#xff0c;放在入队前。 总之&a…...

ALB搭建

ALB: 多级分发、消除单点故障提升应用系统的可用性&#xff08;健康检查&#xff09;。 海量微服务间的高效API通信。 自带DDoS防护&#xff0c;集成Web应用防火墙 配置&#xff1a; 1.创建ECS实例 2.搭建应用 此处安装的LNMP 3.创建应用型负载均衡ALB实例 需要创建服务关联角…...

c# 动态lambda实现二级过滤(支持多种参数类型和模糊查询)

效果 调用方法 实体类&#xff08;可以根据需求更换&#xff09; public class ToolStr50 {public bool isSelected { get; set; }public string toolStr1 { get; set; }public string toolStr2 { get; set; }public string toolStr3 { get; set; }public string toolStr4 { …...

第J5周:DenseNet+SE-Net实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 任务&#xff1a; ●1. 在DenseNet系列算法中插入SE-Net通道注意力机制&#xff0c;并完成猴痘病识别 ●2. 改进思路是否可以迁移到其他地方呢 ●3. 测试集acc…...

Intern大模型训练营(五):书生大模型全链路开源体系笔记

观看视频&#xff0c;可以比较详细地了解到书生大模型全链路开源体系。 其中有几个印象比较深的点&#xff1a; 这张图讲述了书生浦语大模型开源的发展史&#xff0c;同时与主流的llama和Chatgpt模型进行比较&#xff0c;可以看出在参数上&#xff0c;InterLM在努力追赶甚至超…...

CogVideoX-2b CSDN专用版:5分钟部署你的本地AI视频导演

CogVideoX-2b CSDN专用版&#xff1a;5分钟部署你的本地AI视频导演 1. 从想法到画面&#xff0c;只差一个启动按钮 想象一下这样的场景&#xff1a;你脑子里闪过一个绝妙的视频创意——也许是“一只戴着宇航员头盔的柴犬在月球表面蹦跳”&#xff0c;也许是“赛博朋克都市的雨…...

保姆级教程:SenseVoiceSmall多语言语音识别快速部署与情感检测实战

保姆级教程&#xff1a;SenseVoiceSmall多语言语音识别快速部署与情感检测实战 1. 环境准备与快速部署 1.1 系统要求与依赖安装 在开始之前&#xff0c;请确保你的系统满足以下基本要求&#xff1a; 操作系统&#xff1a;Linux (推荐 Ubuntu 20.04) 或 Windows WSL2Python版…...

保姆级教程:手把手教你用Xinference-v1.17.1在Jupyter里玩转开源大模型

保姆级教程&#xff1a;手把手教你用Xinference-v1.17.1在Jupyter里玩转开源大模型 1. 为什么选择Xinference&#xff1f; 1.1 什么是Xinference&#xff1f; Xinference&#xff08;Xorbits Inference&#xff09;是一个开源平台&#xff0c;它让运行各种AI模型变得像调用P…...

PROJECT MOGFACE镜像部署详解:针对STM32开发者的AI赋能入门

PROJECT MOGFACE镜像部署详解&#xff1a;针对STM32开发者的AI赋能入门 很多做嵌入式开发的朋友&#xff0c;尤其是玩STM32的&#xff0c;可能都动过接触AI的念头。但一看到那些复杂的Python环境、动辄几十G的模型文件、还有各种依赖冲突&#xff0c;头就大了。心想&#xff1…...

COMSOL能源开采仿真:基质中瓦斯扩散、裂隙中瓦斯渗流,分析不同工况条件下渗透率演化、有效抽...

COMSOL能源开采仿真&#xff1a;基质中瓦斯扩散、裂隙中瓦斯渗流&#xff0c;分析不同工况条件下渗透率演化、有效抽采半径、抽采产量。 使用模块&#xff1a;PDE&#xff08;基质瓦斯扩散&#xff09;&#xff0c;达西定律/PDE&#xff08;裂隙瓦斯渗流&#xff09;&#xff0…...

SAM3优化指南:如何调节掩码精细度获得更好边缘效果

SAM3优化指南&#xff1a;如何调节掩码精细度获得更好边缘效果 1. 引言&#xff1a;为什么需要调节掩码精细度 在实际使用SAM3进行图像分割时&#xff0c;很多用户会遇到一个共同的问题&#xff1a;生成的物体边缘不够精细。比如分割一只猫时&#xff0c;毛发边缘显得生硬&am…...

避坑指南:用Python调用腾讯混元大模型API时,你可能会遇到的5个常见错误及解决方法

避坑指南&#xff1a;用Python调用腾讯混元大模型API时&#xff0c;你可能会遇到的5个常见错误及解决方法 调试API接口就像在迷宫中寻找出口——每个转角都可能遇到意想不到的障碍。作为使用腾讯混元大模型的开发者&#xff0c;我在过去三个月里处理了超过200次API调用异常&…...

计算机毕设 java 基于 Javaweb 的家教管理系统 智能家教匹配管理系统 家教服务综合平台

计算机毕设 java 基于 Javaweb 的家教管理系统 f7xm39&#xff08;配套有源码 程序 mysql 数据库 论文&#xff09;本套源码可以先看具体功能演示视频领取&#xff0c;文末有联 xi 可分享随着家庭教育需求的不断增长&#xff0c;家教市场规模持续扩大&#xff0c;但传统家教模式…...

【AI大模型】在线大语言模型实现与学习具身智能

目录 一、在线大语言模型的核心实现原理 &#xff08;一&#xff09;基础模型架构与预训练优化 &#xff08;二&#xff09;在线部署与实时交互模块 &#xff08;三&#xff09;持续学习与反馈优化模块 二、在线大语言模型学习具身智能的核心路径 &#xff08;一&#xff…...

VINS-Fusion 实战指南:从环境搭建到多传感器融合部署

1. VINS-Fusion入门&#xff1a;为什么选择这个多传感器融合方案 第一次接触VINS-Fusion是在做一个无人机定位项目时&#xff0c;当时试过各种开源SLAM方案&#xff0c;最后发现这个来自香港科技大学团队的工具在传感器融合方面确实有两把刷子。简单来说&#xff0c;它就像个聪…...