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

Leetcode 131.分割回文串 回溯 C++实现

Leetcode 131. 分割回文串

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

算法:

创建二维返回数组 ans ,和临时数组 path

进入 dfs 函数,当 i==n 时,证明已经递归到最后一个元素,执行完就可以 return 。从 i 到末尾,如果是回文就加入到 path 数组中,然后进入下一层递归。递归结束后将 path 存入返回数组 ans 中,最后恢复现场准备进入下一次递归。

代码:

class Solution {// 判断是否是回文字符串bool isPalindrome(string& s,int left,int right){while(left < right)if(s[left++] != s[right--]) return false;return true;}
public:vector<vector<string>> partition(string s) {vector<vector<string>> ans;// 返回数组ansvector<string> path;// 临时数组pathint n = s.length();// 字符串s的长度nauto dfs = [&](auto&& dfs,int i){if(i == n){// 结束ans.emplace_back(path);return ;}for(int j = i;j < n;j++){if(isPalindrome(s,i,j)){path.push_back(s.substr(i,j - i + 1));dfs(dfs,j + 1);// 进入下一层递归path.pop_back();// 恢复现场}}};dfs(dfs,0);// 递归入口return ans;}
};

p.s. string.substr( a , b )    :   从 string 的第 a 个位置开始,连续读取 b 个数量的字符。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux下qt程序缺少中文字库,中文显示为框框
  • 【Java设计模式】非循环访问者模式:简化对象交互
  • Git下载安装配置
  • Apache + Tomcat + ajp 协议配置
  • Android13禁用Settings里面的Force Stop 強制停止按钮
  • 浏览器精度问题
  • Vue3常见知识**MS【4】
  • 【案例56】安全设备导致请求被拦截
  • 【PGCCC】PostgreSQL线程池技术揭秘:从原理到实战应用
  • Broadcast Hash Join
  • 【RabbitMQ】快速上手
  • linux内核驱动:pca953xIO扩展芯片驱动总结
  • Swift concurrency 3 — 三种异步方式(@escaping closure, Combine, async/await)
  • CAPL——定时器用法
  • Vue3:命名路由
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • ESLint简单操作
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript-Array类型
  • javascript从右向左截取指定位数字符的3种方法
  • Java反射-动态类加载和重新加载
  • MD5加密原理解析及OC版原理实现
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 原生js练习题---第五课
  • 昨天1024程序员节,我故意写了个死循环~
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # Redis 入门到精通(七)-- redis 删除策略
  • #{}和${}的区别是什么 -- java面试
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #if 1...#endif
  • $GOPATH/go.mod exists but should not goland
  • (003)SlickEdit Unity的补全
  • (06)金属布线——为半导体注入生命的连接
  • (a /b)*c的值
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (ZT)薛涌:谈贫说富
  • (编译到47%失败)to be deleted
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)linux使用docker容器运行mysql
  • (九十四)函数和二维数组
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)appium-desktop定位元素原理
  • (转)c++ std::pair 与 std::make
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)平衡树
  • .NET C# 使用 iText 生成PDF
  • .NET Project Open Day(2011.11.13)
  • .NET 分布式技术比较
  • .NET 给NuGet包添加Readme
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET技术成长路线架构图
  • .net实现头像缩放截取功能 -----转载自accp教程网