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

分割回文串(DFS)

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

示例 1:

输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]

示例 2:

输入:s = "a"
输出:[["a"]]

提示:

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

DFS:

class Solution {vector<string> path;vector<vector<string>> v;
public:vector<vector<string>> partition(string s) {dfs(s, 0);return v;}void dfs(string s, int i){  //i 是一个索引,表示当前递归调用时正在考虑的子串的起始位置if (i == s.size()) { //当 i 达到字符串 s 的末尾时,说明找到了一个完整的回文分割方案v.push_back(path);return;}for(int j = i; j < s.size(); j++){if(is(s, i, j)){   // 如果 s[i:j] 是回文path.push_back(s.substr(i, j - i + 1));  // 加入当前子串到 pathdfs(s, j + 1);   // 递归调用,从下一个索引开始继续分割path.pop_back();  // 回溯,撤销前面的选择}}}bool is(string& s, int left, int right){ //检查字符串 s 的 [left, right] 区间是否是回文。while(left < right){if(s[left++] != s[right--]){return false;}}return true;}
};

vector<string> path:用于存储当前分割方案中的回文子串

vector<vector<string>> v:存储所有符合条件的回文分割方案

dfs 函数在每次递归时,从位置 i 开始,检查从 ij 的每个子串是否是回文。一旦找到一个回文子串,就递归到下一个位置(即从 j + 1 开始),继续对剩余的字符串进行分割,直到整个字符串都被分割成回文子串为止。

path.push_back(s.substr(i, j - i + 1));

这一行代码的作用是将字符串 s 的一个子串添加到 path 中。

substr(i, len):用于提取从 i 开始,长度为 len 的子串。

  • i:子串的起始位置(从 0 开始)。
  • len:子串的长度。
http://www.lryc.cn/news/479623.html

相关文章:

  • Qt第三课 ----------容器类控件
  • 打印菱形(C语言)
  • Oracle 19c 中启用 scott 用户
  • git commit 校验
  • 【AtCoder】Beginner Contest 377-B.Avoid Rook Attack
  • 江协科技STM32学习- P38 软件SPI读写W25Q64
  • 【Triton 教程】低内存 Dropout
  • npx创建项目时,error fetch failed.TypeError: fetch failed
  • 《Kotlin实战》-附录
  • yelp数据集上识别潜在的热门商家
  • 【Linux】进程信号全攻略(一)
  • linux文件重命名
  • 如何选择适合的AWS EC2实例类型
  • 【Uniapp】Uniapp Android原生插件开发指北
  • 【随手笔记】FLASH-W25Q16(三)
  • 2024软件测试面试热点问题
  • 【JAVA】java 企业微信信息推送
  • 介绍一下数组(c基础)(smart 版)
  • Java项目实战II基于Spring Boot的个人云盘管理系统设计与实现(开发文档+数据库+源码)
  • 探索数据科学与大数据技术专业本科生的广阔就业前景
  • 微服务架构面试内容整理-Zuul
  • 解决Knife4j 接口界面UI中文乱码问题
  • 微服务架构面试内容整理-Sleuth
  • Go语言的接口示例
  • 【Apache ECharts】<农作物病害发生防治面积>
  • 基于vue3实现的聊天机器人前端(附代码)
  • DICOM标准:深入详解DICOM医学影像中的传输语法
  • sql server 文件备份恢复
  • Gradle命令编译Android Studio工程项目并签名
  • lua入门教程:垃圾回收