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

力扣HOT100之回溯:131. 分割回文串


这道题自己A的,思路也不算难,不过需要利用125.验证回文串这道题的基础,我们首先定义一个辅助函数,用于判断输入字符串是否为回文串,然后我们定义一个递归函数,用于搜索所有可能的结果。递归函数backtracking()接收3个参数,分别为string& s, string currentint ns代表原始的字符串,current代表目前累计起来的字符子串,n代表现在正在处理下标为n处及以后的子串分隔问题。
当输入参数n恰好等于s的长度时,则直接触发终止条件,我们此时收获结果,将一个存储了若干个回文子串的向量加入到结果中,否则就还没结束,进入递归主逻辑。
在主逻辑中,我们定义一个一重循环,每循环一次,就说明下标i左侧的子串已经分割完毕,我们只需要考虑[i, s.size() - 1]范围内的字符如何分割即可。该循环从下标n开始,不断将s[i]添加到current的末尾,再判断current是否为回文子串,如果为回文串,则可以将current添加到路径中,此时从下标nn + current.size() - 1处的子串就被分割出来,并添加到路径中了,我们就可以递归调用backtracking(s, "", n + current.size())探索下一段回文子串了。

class Solution {
public://辅助函数,判断是否为回文子串bool judge(string& s){int left = 0, right = s.size() - 1;   //定义左右指针while(left < right){if(s[left] != s[right])return false;left++;right--;}return true;}vector<vector<string>> result;   //记录所有的答案vector<string> path;      //记录每一个合法的结果vector<vector<string>> partition(string s) {backtracking(s, "", 0);return result;}//递归函数void backtracking(string& s, string current, int n){//递归终止条件if(n >= s.size()){result.emplace_back(path);return ;}//递归主体for(int i = n; i < s.size(); i++){current += s[i];if(!judge(current)) continue;  //无法构成回文串,进入下次循环path.emplace_back(current);backtracking(s, "", n + current.size());    //寻找下一段回文子串//回溯path.pop_back();}}
};
http://www.xdnf.cn/news/678349.html

相关文章:

  • 基于Matlab实现各种光谱数据预处理
  • Turf.js:前端地理空间分析的瑞士军刀
  • 2025山东CCPC补题
  • 基于Python的简易聊天机器人实现:从原理到实践
  • 组合API-provide和inject函数
  • 多模态机器学习
  • Android 开发:从 View Activity 向 Compose Activity 传递数据的多种实现方式
  • [yolov11改进系列]基于yolov11引入可改变核卷积AKConv的python源码+训练源码
  • QCustomPlot设置曲线图中文字缩放大小
  • 微信小程序一次性订阅封装
  • Linux 权限管理基础:深入理解 root 与 sudo 的用法
  • 【监控】Spring Boot 应用监控
  • libvirt设置虚拟机mtu实现原理
  • 决策树 GBDT XGBoost LightGBM
  • ETL数据集成过程全流程优化指南
  • ICMP与TCP端口:网络层与传输层解析
  • 尚硅谷redis7 49-51 redis管道之理论简介
  • Python的虚拟环境
  • 4 月 62100 款 App 被谷歌下架!环比增长 28%
  • 英码科技携带 “无感知AI数字课堂”解决方案,亮相第22届广东教育装备展
  • redis高并发问题
  • Common JS和ES Module的区别
  • 6.4.5_关键路径
  • 窗口函数总结篇
  • -动静态库简单使用
  • ABC 352
  • 依赖倒置原则 (Dependency Inversion Principle, DIP)
  • 分块查找详解
  • 第二章 1.3 数据采集风险的现有技术和解决方案
  • RK3568 OH5.1 镜像烧录