Leetcode131

链接:力扣 。

题目:

给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。

返回 s 所有可能的分割方案。

示例1:

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

示例2:

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

思路:

本题涉及两个问题:

  1. 切割问题,有不同的切割方式
  2. 判断回文

判断回文很容易。设置一个左指针left指向左边界、右指针right指向右边界,再用for循环依次判断s[left]是否等于s[right],如果不等则返回false,遍历完成没有返回false则返回true。这样就可以判断s在[left,right]内是否为回文串了。

切割问题用递归的思路。为每层递归传入参数Index表示当前开始的位置,用for循环从index开始向后遍历,依次判断s的子串[index,i]是否为回文串,如果为回文串则将该串保留,下一层递归从i+1开始,最后记得回溯撤销该子串。这样,递归的边界就是index==s.size(),当到达边界时将保存的子串加入最终结果result。

参考代码:

class Solution {
public:vector<vector<string>> result;vector<string> palindrome;bool is_palindrome(string &s, int left, int right) {for (int i = left, j = right; i < j; i++, j--) {if (s[i] != s[j]) {return false;}}return true;}void dfs(string &s, int index) {if (index >= s.size()) {result.push_back(palindrome);return;}for (int i = index; i < s.size(); i++) {if (is_palindrome(s, index, i)) {palindrome.push_back(s.substr(index, i - index + 1));dfs(s, i + 1);palindrome.pop_back();}}}vector<vector<string>> partition(string s) {dfs(s, 0);return result;}
};

力扣刷题 DAY_66 回溯相关推荐

  1. 力扣刷题记录-回溯算法相关题目

    首先介绍一下回溯算法 回溯通常在递归函数中体现,本质也是一种暴力的搜索方法,但可以解决一些用for循环暴力解决不了的问题,其应用有: 1.组合问题: 例:1 2 3 4这些数中找出组合为2的组合,有1 ...

  2. 力扣刷题pdf(java版本,内含暗黑版和光明版),都在这里了

    BAT大佬力扣刷题pdf,都在这里了! ​相信很多小伙伴刷题的时候面对力扣上近两千道题目,感觉无从下手! 我找了很久,今天终于让找到了Java版leetcode算法题解笔记,强烈建议先按照本篇介绍pd ...

  3. 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!

    开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...

  4. 《剑指Offer》力扣刷题笔记(03-10)

    <剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...

  5. 力扣刷题之二叉树的层序遍历

                                                      Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...

  6. 『力扣刷题』5275_找出井字棋的获胜者 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...

  7. 『力扣刷题』5276_不浪费原料的汉堡制作方案 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5276_不浪费原料的汉堡制作方案 * 5276. 不浪费原料的汉堡制作方案 显示英文描述* 用户通过次数212* 用 ...

  8. 『力扣刷题』5238_找出给定方程的正整数解 解题代码

    html: embed_local_images: true embed_svg: true offline: true toc: undefined print_background: false ...

  9. 力扣刷题全局变量WA,局部变量AC的问题

    力扣刷题全局变量WA,局部变量AC问题 题目 原因 题目 golang力扣leetcode 1219.黄金矿工 原因 今天在刷题的时候,遇到一个现象,本地跑测试全部通过,一提交就错错错,非常离谱 然后 ...

  10. 力扣刷题-前k个高频元素

    力扣刷题-前k个高频元素 题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2 ...

最新文章

  1. “去哪儿网”2015春招前端面试题
  2. mysql 应用程序优化
  3. java修改动态视频,直播视频app源码,动态修改cron
  4. window下安装nvm、node.js、npm的步骤
  5. Java受查异常和运行时异常的理解
  6. “云网管” -云上构建网络自动化体系
  7. 如何隐藏你的 Linux 的命令行历史
  8. 在 xml 视图里指定 SAP UI5 VizType 实例
  9. java循环满足跳出_java跳出循环的几种方式
  10. 在各个PC端应用使用表情的快捷键,王大妈都开始用这个表情啦
  11. 因为我想在博客园长呆,所以给博客园提一些改进建议
  12. objectvie-c 数组特别遍历方法
  13. 文/有品生活(pinpinlife) 小户型家具如何摆?
  14. [改造]微信缩放字体view的改造
  15. 网络营销4p营销策略
  16. 2021年海洋工程装备行业发展研究报告
  17. 空气净化器只是心理作用???
  18. 华为关闭telnet命令_华为s5720配置telnet命令详解
  19. 使用HMMER搜索PFam
  20. android studio 登陆ui界面设计

热门文章

  1. win定时关机_windows如何设置定时关机?
  2. java实现mysql拦截_在mybatis执行SQL语句之前进行拦击处理实例
  3. 转换优化 onnx模型
  4. 学术论文写作 | (7)NLP学术论文写作方法和技巧
  5. Minifilter中 Filter Initiated I/O(过滤器自产生I/O)
  6. tr命令解析_学习笔记
  7. 垃圾邮件分类系统python_【Python】基于Bayes算法的垃圾邮件分类系统
  8. 谁能和乔布斯比勤奋?乔布斯的睡眠时间
  9. H5弹出是否打开微信APP的方式
  10. python小白系列1