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

LeetCode 1745.分割回文串 IV:动态规划(用III或II能直接秒)

【LetMeFly】1745.分割回文串 IV:动态规划(用III或II能直接秒)

力扣题目链接:https://leetcode.cn/problems/palindrome-partitioning-iv/

给你一个字符串 s ,如果可以将它分割成三个 非空 回文子字符串,那么返回 true ,否则返回 false 。

当一个字符串正着读和反着读是一模一样的,就称其为 回文字符串

 

示例 1:

输入:s = "abcbdd"
输出:true
解释:"abcbdd" = "a" + "bcb" + "dd",三个子字符串都是回文的。

示例 2:

输入:s = "bcbddxy"
输出:false
解释:s 没办法被分割成 3 个回文子字符串。

 

提示:

  • 3 <= s.length <= 2000
  • s​​​​​​ 只包含小写英文字母。

解题方法:动态规划

如果想用之前的方法直接AC:

  • 1278.分割回文串 III:令k = 3,复杂度 O ( n 2 k ) O(n^2k) O(n2k)
  • 132.分割回文串 II:也就是今天的方法。

132.分割回文串 II中我们通过预处理可以在 O ( n 2 ) O(n^2) O(n2)时间复杂度内得到字符串s的任一字串是否为回文串(方法简述如下:)

使用isok[i][j]表示字符串s从下标i到下标j的子串是否为回文串。若 i ≥ j i\geq j ij则视为回文串,否则有状态转移方程 i s o k [ i ] [ j ] = s [ i ] = = s [ j ] AND  i s o k [ i + 1 ] [ j − 1 ] isok[i][j] = s[i] == s[j]\text{ AND } isok[i + 1][j - 1] isok[i][j]=s[i]==s[j] AND isok[i+1][j1]

都知道任意一个字串是否是回文串了,我直接枚举两个分割位置,每次使用 O ( 1 ) O(1) O(1)时间看看被分成的三段是否都为回文字符串不就可以了么?

  • 时间复杂度 O ( n 2 ) O(n^2) O(n2),其中 n = l e n ( s ) n=len(s) n=len(s)
  • 空间复杂度 O ( n 2 ) O(n^2) O(n2)

AC代码

C++
/** @Author: LetMeFly* @Date: 2025-03-04 10:18:19* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-03-04 10:28:38*/
class Solution {
public:bool checkPartitioning(string s) {int n = s.size();vector<vector<bool>> isok(n, vector<bool>(n, true));for (int i = n - 1; i >= 0; i--) {for (int j = i + 1; j < n; j++) {isok[i][j] = s[i] == s[j] && isok[i + 1][j - 1];}}for (int i = 0; i < n; i++) {for (int j = i + 1; j < n - 1; j++) {if (isok[0][i] && isok[i + 1][j] && isok[j + 1][n - 1]) {return true;}}}return false;}
};
Python
'''
Author: LetMeFly
Date: 2025-03-04 10:30:23
LastEditors: LetMeFly.xyz
LastEditTime: 2025-03-04 10:33:30
'''
class Solution:def checkPartitioning(self, s: str) -> bool:n = len(s)isok = [[True] * n for _ in range(n)]for i in range(n - 1, -1, -1):for j in range(i + 1, n):isok[i][j] = s[i] == s[j] and isok[i + 1][j - 1]for i in range(n):for j in range(i + 1, n - 1):if isok[0][i] and isok[i + 1][j] and isok[j + 1][n - 1]:return Truereturn False
Go
/** @Author: LetMeFly* @Date: 2025-03-04 10:42:05* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-03-04 10:46:32*/
package mainfunc checkPartitioning(s string) bool {n := len(s)isok := make([][]bool, n)for i, _ := range isok {isok[i] = make([]bool, n)for j, _ := range isok[i] {isok[i][j] = true}}for i := n - 1; i >= 0; i-- {for j := i + 1; j < n; j++ {isok[i][j] = s[i] == s[j] && isok[i + 1][j - 1]}}for i := 0; i < n; i++ {for j := i + 1; j < n - 1; j++ {if isok[0][i] && isok[i + 1][j] && isok[j + 1][n - 1] {return true}}}return false
}
Java
/** @Author: LetMeFly* @Date: 2025-03-04 10:47:02* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-03-04 10:49:14*/
class Solution {public boolean checkPartitioning(String s) {int n = s.length();boolean[][] isok = new boolean[n][n];for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {isok[i][j] = true;}}for (int i = n - 1; i >= 0; i--) {for (int j = i + 1; j < n; j++) {isok[i][j] = s.charAt(i) == s.charAt(j) && isok[i + 1][j - 1];}}for (int i = 0; i < n; i++) {for (int j = i + 1; j < n - 1; j++) {if (isok[0][i] && isok[i + 1][j] && isok[j + 1][n - 1]) {return true;}}}return false;}
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关文章:

LeetCode 1745.分割回文串 IV:动态规划(用III或II能直接秒)

【LetMeFly】1745.分割回文串 IV&#xff1a;动态规划&#xff08;用III或II能直接秒&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/palindrome-partitioning-iv/ 给你一个字符串 s &#xff0c;如果可以将它分割成三个 非空 回文子字符串&#xff0c;…...

C++发展

目录 ​编辑C 的发展总结&#xff1a;​编辑 1. C 的早期发展&#xff08;1979-1985&#xff09; 2. C 标准化过程&#xff08;1985-1998&#xff09; 3. C 标准演化&#xff08;2003-2011&#xff09; 4. C11&#xff08;2011年&#xff09; 5. C14&#xff08;2014年&a…...

Python:函数,return返回值与形参实参

函数&#xff1a; 如&#xff1a; def login():print("这是登陆函数") login() #调用几次&#xff0c;函数里面的代码就会运行几次&#xff0c;每次调用的时候函数都会从头开始运行 return返回值&#xff1a;函数执行结束后最后给调用着的一个结果 作用&#xff1a…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例2: 分页和排序

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例2: 分页和排序📚前言📚页面效果📚指令…...

pandas 文本数据处理

文本数据处理 获取字符串长度&#xff1a; ​ 需要用到函数&#xff1a;str.len() 例&#xff1a; # 求字符串长度 # 引用 pandas import pandas as pd # 定义数据 data {"姓名":["张三","李四","王五","赵六"],"…...

GCC RISCV 后端 -- GCC 后端框架的一些理解

GCC 已经提供了一整套的编译框架&#xff0c;从前端&#xff08;Frontend / GENERIC-Tree&#xff09;对编程语言的语法语义处理&#xff0c;到中端&#xff08;Middle-End / GIMPLE-Tree&#xff09;的目标机器无关&#xff08;Target Indepndent&#xff09;的优化处理&#…...

FastGPT 源码:如何实现 “问题优化“

文章目录 FastGPT 源码&#xff1a;如何实现 "问题优化"一、前言二、源码分析2.1 queryExtension.ts 提示词2.2 queryExtension.ts 核心逻辑2.3 queryExtension 引用位置 三、流程总结 FastGPT 源码&#xff1a;如何实现 “问题优化” 一、前言 问题优化的背景和目…...

CSS—flex布局、过渡transition属性、2D转换transform属性、3D转换transform属性

​ 1.flex布局 也叫弹性布局&#xff0c;是浏览器提倡的布局模型&#xff0c;非常适合结构化布局&#xff0c;提供了强大的空间分布和对齐能力&#xff0c;不会产生浮动布局中脱标现象&#xff0c;布局网页更简单&#xff0c;更灵活。 flex容器属性&#xff1a; 属性描述d…...

Spring Boot Gradle 项目中使用 @Slf4j 注解

Spring Boot Gradle 项目中&#xff0c;如果想使用 Slf4j 注解来启用日志记录&#xff0c;首先需要添加 Lombok 和 SLF4J 的依赖。可以通过以下步骤来添加它们&#xff1a; 1. 添加 Lombok 依赖 在 build.gradle 文件中添加以下 Lombok 依赖&#xff1a; dependencies {impl…...

FreeRTOS系列---程序正常,但任务无法创建

实验环境 stm32F103RCT6核心板 keil5 vscode stm32cubemx 使用stm32cubemx 问题现场 void my_task_init(void) {xTaskCreate(LED1_Task, "LED1_Task", configMINIMAL_STACK_SIZE, NULL, 1, NULL);xTaskCreate(LED2_Task, "LED2_Task", configMINIMA…...

linux应用:errno、perror、open、fopen

errno errno 是一个全局变量&#xff0c;定义在 头文件中。当系统调用&#xff08;如 open、read、write 等&#xff09;或库函数执行失败时&#xff0c;会将一个错误码赋值给 errno。不同的错误码代表不同的错误类型&#xff0c;通过检查 errno 的值&#xff0c;可以判断具体…...

物联网中的气象监测设备具备顶级功能

物联网中的气象监测设备具备顶级功能时&#xff0c;通常集成GPS、数据上报和预警系统&#xff0c;以确保精准监测和及时响应。以下是这些功能的详细说明&#xff1a; 1. GPS定位 精准定位&#xff1a;GPS模块提供设备的精确地理位置&#xff0c;确保数据与具体位置关联&#…...

15-YOLOV8OBB损失函数详解

一、YOLO OBB支持的OBB 在Ultralytics YOLO 模型中,OBB 由YOLO OBB 格式中的四个角点表示。这样可以更准确地检测到物体,因为边界框可以旋转以更好地适应物体。其坐标在 0 和 1 之间归一化: class_index x1 y1 x2 y2 x3 y3 x4 y4 YOLO 在内部处理损失和输出是xywhr 格式,x…...

WHAT - 前端异步事件流处理场景梳理

目录 一、典型场景二、解决方案与技术选型1. 基础异步控制2. 状态管理方案3. 复杂任务调度4. 任务取消机制5. 微任务队列优化 三、最佳实践建议四、工具链推荐 前端异步任务流处理是现代Web开发中常见的需求&#xff0c;尤其在复杂业务逻辑、高交互性应用中不可或缺。以下是常见…...

计算机网络软考

1.物理层 1.两个主机之间发送数据的过程 自上而下的封装数据&#xff0c;自下而上的解封装数据&#xff0c;实现数据的传输 2.数据、信号、码元 码元就是数字通信里用来表示信息的基本信号单元。比如在二进制中&#xff0c;用高电平代表 “1”、低电平代表 “0”&#xff0c…...

安防监控/视频集中存储EasyCVR视频汇聚平台如何配置AI智能分析平台的接入?

EasyCVR安防视频监控平台不仅支持AI边缘计算智能硬件设备的接入&#xff0c;还能快速集成AI智能分析平台&#xff0c;接收来自智能分析平台或设备的AI告警信息&#xff0c;如烟火检测、周界入侵检测、危险区域闯入检测、安全帽/反光衣佩戴检测等。 本文将详细介绍如何在EasyCVR…...

做小程序开发的安全防护全方案

小程序开发安全防护方案 为了确保小程序在开发过程中的安全性&#xff0c;以下是一个全面的防护方案&#xff1a; 1. 需求分析与规划 功能模块分析&#xff1a;明确小程序的功能模块&#xff0c;识别高风险区域如用户登录和支付功能。数据分类分级&#xff1a;将数据分为敏感…...

在Spring Boot项目中导出复杂对象到Excel文件

在Spring Boot项目中导出复杂对象到Excel文件&#xff0c;可以利用Hutool或EasyExcel等库来简化操作。这里我们将详细介绍如何使用Hutool和EasyExcel两种方式来实现这一功能。 使用Hutool导出复杂对象到Excel 首先确保你的pom.xml中添加了Hutool的依赖&#xff1a; <depe…...

从JDBC到数据库连接池:构建高性能Java应用的基石(中篇)

推荐关联阅读&#xff1a;JDBC核心技术解析&#xff1a;从基础连接到ORM演进之路&#xff08;上&#xff09; 一、JDBC的困境与连接池的救赎 1.1 传统JDBC的致命缺陷 在Java应用与数据库交互的原始模式中&#xff0c;开发者通过DriverManager.getConnection()获取数据库连接…...

JavaWeb后端基础(6)

主键返回 例子&#xff1a; /** * 新增员工数据 */ Options(useGeneratedKeys true, keyProperty "id") Insert("insert into emp(username, name, gender, phone, job, salary, image, entry_date, dept_id, create_time, update_time) " "value…...

日语语音识别终极指南:5个技巧让Faster-Whisper-GUI准确率提升300%

日语语音识别终极指南&#xff1a;5个技巧让Faster-Whisper-GUI准确率提升300% 【免费下载链接】faster-whisper-GUI faster_whisper GUI with PySide6 项目地址: https://gitcode.com/gh_mirrors/fa/faster-whisper-GUI 想要在本地高效处理日语音频转写和字幕生成吗&am…...

小米手机解锁BL保姆级教程:无需社区5级,用PHP脚本绕过HyperOS限制(附常见错误码解决)

小米手机解锁BL实战指南&#xff1a;突破HyperOS限制的完整方案 手里的小米13升级到HyperOS后&#xff0c;解锁Bootloader突然变得遥不可及&#xff1f;社区等级5和答题门槛让不少技术爱好者望而却步。本文将带你深入探索一种巧妙的技术方案&#xff0c;无需满足小米社区的苛刻…...

为什么你的 Multi-Agent 系统越加 Agent 越慢:并发与调度的反直觉陷阱

为什么你的 Multi-Agent 系统越加 Agent 越慢:并发与调度的反直觉陷阱 一、引言 钩子:90% 大模型开发者都踩过的性能悖论 你是否有过这样的经历:花了两周时间把单 Agent 的文档分析系统改造成多 Agent 协作架构,原本预期 5 个 Agent 能把处理速度提升 4 倍,结果上线后发…...

智慧工业控制面板工控部件元器件LCD部件检测数据集VOC+YOLO格式365张8类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;365标注数量(xml文件个数)&#xff1a;365标注数量(txt文件个数)&#xff1a;365标注类别数&…...

Ubuntu 22.04下编译安装Realtek RTL8852BE驱动,内核版本大于5.18和小于5.18的区别操作

Ubuntu 22.04下Realtek RTL8852BE驱动编译指南&#xff1a;内核版本差异全解析 当你兴奋地在新买的RedmiBook上安装Ubuntu 22.04&#xff0c;却发现WiFi图标神秘消失时&#xff0c;别慌——这很可能是因为Realtek RTL8852BE这块WiFi 6网卡在Linux下的驱动支持问题。作为一块性能…...

别再让API请求拖慢你的Python应用:用cachetools实现LRU缓存,性能提升实测

别再让API请求拖慢你的Python应用&#xff1a;用cachetools实现LRU缓存&#xff0c;性能提升实测 当你的Python应用开始频繁调用外部API或进行重复计算时&#xff0c;性能瓶颈往往悄然而至。想象一下&#xff0c;每次用户请求都需要等待数秒的API响应&#xff0c;或是相同的数据…...

2025_NIPS_Team-PSRO for Learning Approximate TMECor in Large Team Games via Cooperative Reinforce...

文章核心总结与翻译 一、主要内容 本文聚焦双人零和团队博弈(如桥牌、足球),针对现有算法要么仅适用于小型博弈且有博弈论保证,要么能扩展到大型博弈但缺乏理论保证的问题,提出了两种基于策略空间响应预言机(PSRO)的改进算法,旨在高效学习近似团队协调最大最小均衡(…...

我把Cursor和Copilot都扔了:实测Token从120万砍到4万

Claude Code称霸后&#xff0c;我把Cursor和Copilot都扔了&#xff1a;实测Token从120万砍到4万上周&#xff0c;Graphon AI 低调完成 830 万美元融资&#xff0c;推出 “pre-model intelligence layer” 来解决企业多模态数据关联难题&#xff1b;几乎同一时间&#xff0c;Ant…...

Sora 2发布即封神?Veo 2悄悄升级3项底层架构,92%开发者尚未察觉的性能跃迁,

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Sora 2与Veo 2对比评测 核心定位与架构差异 Sora 2 是 OpenAI 推出的原生视频生成模型&#xff0c;基于扩散 Transformer 架构&#xff0c;支持长达 60 秒、1080p 分辨率的连贯视频生成&#xff0c;其训练数据…...

别再死记硬背公式了!用VisionMaster的N点标定,手把手教你搞定相机和机械手‘对齐’

视觉标定实战&#xff1a;用工具思维破解N点标定难题 在工业自动化领域&#xff0c;相机与机械手的协同工作就像两个语言不通的人试图完成精密舞蹈——标定就是为他们建立共同的坐标系词典。传统教材常将标定过程简化为数学公式的堆砌&#xff0c;导致许多工程师陷入"会推…...