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

【LeetCode】131.分割回文串

目录

  • 题目描述
  • 输入输出示例及数据范围
  • 思路
  • C++ 实现

题目描述

这道题目来自 LeetCode 131. 分割回文串。

题目描述如下:

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

输入输出示例及数据范围

在这里插入图片描述

思路

这道题的类型被归为回溯,实际上这道题目并不是一步回溯就能够解决的,在回溯之前,我们需要先对整个字符串进行预处理。

这道题目的要求是让我们对原字符串进行分割,分割的结果是若干个子串,且每个子串都是回文串。

那么我们解决这道题目的思路就是,对于子串s[i...j],加入它是回文串,就把它加入到答案当中,假定字符串的长度为n,我们现在要进一步解决的问题是寻找s[j+1...n]的子串,进行分割,并将结果加入到答案当中。

当然,我们可以简单地使用双指针不断地枚举子串的范围,并判断范围内的子串是否是回文串,但是显然这种解法的时间复杂度过高。

一个更快的思路是,首先我们使用 dp 对回文串进行预处理,新开一个二维数组f,如果f[i][j] == true,则表明子串s[i...j]是回文串,此时可以将子串s[i...j]加入到答案当中,下一次回溯从j+1开始。

C++ 实现

class Solution {
public:vector<vector<string>> ans;vector<vector<bool>> f;vector<string> curr;int n;void solve(string &s, int i) {if(i == s.size()) {ans.push_back(curr);return;}for(int j=i; j<n; j++) {if(f[i][j]) {curr.push_back(s.substr(i, j - i + 1));solve(s, j + 1);curr.pop_back();}}}vector<vector<string>> partition(string s) {n = s.size();f.assign(n, vector<bool>(n, true));for(int i=n-1; i>=0; i--) {for(int j=i+1; j<n; j++) {	// 对回文串进行预处理f[i][j] = (s[i] == s[j]) && f[i + 1][j - 1];}}solve(s, 0);return ans;}
};
http://www.lryc.cn/news/544272.html

相关文章:

  • JeeWMS graphReportController.do SQL注入漏洞复现(CVE-2025-0392)
  • 基于Python+django+mysql旅游数据爬虫采集可视化分析推荐系统
  • 我的工作经历
  • 筑牢安全防线:工商业场所燃气泄漏防护新方案
  • 基于STM32的智能停车场管理系统
  • MacBook 终端中使用 vim命令
  • VoIP之SBC(会话边界控制器)
  • threejs:document.createElement创建标签后css设置失效
  • 安装2018版本的petalinux曲折经历
  • return和print
  • springboot411-基于Java的自助客房服务系统(源码+数据库+纯前后端分离+部署讲解等)
  • 跨平台文件互传工具
  • final 关键字在不同上下文中的用法及其名称
  • Elasticsearch:使用阿里云 AI 服务进行嵌入和重新排名
  • 【愚公系列】《鸿蒙原生应用开发从零基础到多实战》004-TypeScript 中的泛型
  • IP属地是通过卫星定位的吗?如何保护用户隐私
  • 【云原生之kubernetes实战】在k8s环境中高效部署Vikunja任务管理工具(含数据库配置)
  • php序列化与反序列化
  • 视频级虚拟试衣技术在淘宝的产品化实践
  • 音视频-WAV格式
  • c++ std::array使用笔记
  • 第39天:安全开发-JavaEE应用SpringBoot框架Actuator监控泄漏Swagger自动化
  • 浏览器JS打不上断点,一点就跳到其他文件里。浏览器控制台 js打断点,指定的位置打不上断点,一打就跳到其他地方了。
  • conda环境管理 kernel注册到jupyter notebook
  • 【SpringBoot】【log】 自定义logback日志配置
  • 15.7 LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统
  • 计算机网络基础:揭开网络世界的神秘面纱
  • 工会考试知识点分享
  • az devops login报错:Failed to authenticate using the supplied token.
  • Halcon图像预处理算子 sobel算子、傅里叶变换算子、卷积算子