题目描述:

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

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

示例:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-partitioning

解题思路:

1、显然回溯法:求所有可能结果&结果是个List<list<>>类型。

2、此题与求所以子集很相似,知识每个自己都要判断一个是不是回文串。

3、注意判断回溯函数使用huisu(int begin,int end,String target) 便于字串处理

Java代码实现如下

 1 //回文字符判断
 2     public boolean isPalindrome(String s,int start,int end){
 3         while(start<end){
 4             if(s.charAt(start)!=s.charAt(end))
 5                 return false;
 6             start++;
 7             end--;
 8         }
 9         return true;
10     }
11
12     public List<List<String>> partition(String s) {
13         //求出所有子集
14         //判断是不是回文
15         List<List<String>> result = new ArrayList<>();
16         List<String> temp = new ArrayList<>();
17         part(result,temp,s,0);
18         return result;
19     }
20
21     public void part(List<List<String>> result,List<String> temp,String s,int begin){
22         if (begin==s.length()){
23             result.add(new ArrayList(temp));  //一定要先申请内存,否则添加的是一个引用,返回结果为空。
24             return;  //处理完成一定要return!!!
25         }
26         for (int i=begin;i<s.length();i++){
27             if (isPalindrome(s,begin,i)){
28                 temp.add(s.substring(begin,i+1));
29                 part(result,temp,s,i+1);
30                 temp.remove(temp.size()-1);
31             }
34         }

   

转载于:https://www.cnblogs.com/sqchao/p/11070140.html

LeetCode刷题笔记-回溯法-分割回文串相关推荐

  1. 【python】一道LeetCode搞懂递归算法!#131分割回文串 #以及刷LeetCode的一点点小心得 [数据结构与算法基础]

    题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串.返回 s 所有可能的分割方案. # 示例 输入: "aab" 输出: [["aa",&q ...

  2. python【力扣LeetCode算法题库】409-最长回文串(数学 计数器)

    最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字 ...

  3. LeetCode刷题笔记(算法思想 四)

    LeetCode刷题笔记(算法思想 四) 七.动态规划 斐波那契数列 70. 爬楼梯 198. 打家劫舍 213. 打家劫舍 II 信件错排 母牛生产 矩阵路径 64. 最小路径和 62. 不同路径 ...

  4. leetcode刷题笔记——二分查找

    leetcode刷题笔记--二分查找 目前完成的贪心相关的leetcode算法题序号: 中等:80,81 困难:4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com ...

  5. LeetCode刷题笔记2——数组2

    LeetCode刷题笔记2--数组2 重塑数组 题目 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原 ...

  6. 小何同学的leetcode刷题笔记 基础篇(01)整数反转

    小何同学的leetcode刷题笔记 基础篇(01)整数反转[07] *** [01]数学取余法*** 对数字进行数位操作时,常见的方法便是用取余的方法提取出各位数字,再进行操作 操作(1):对10取余 ...

  7. LeetCode刷题笔记汇总

    LeetCode刷题笔记汇总 第一次刷LeetCode写的一些笔记. 1.两数之和 3.无重复字符的最长子串 15.三数之和 18.四数之和 19.删除链表的倒数第 N 个结点 20.有效的括号 21 ...

  8. Leetcode刷题笔记(代码随想录)

    1 数组 1.1 二分查找 第一种写法:我们定义 target 是在一个在左闭右闭的区间里,也就是[left, right] .区间的定义这就决定了二分法的代码应该如何写,因为定义target在[le ...

  9. 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)

    LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...

  10. 【leetcode刷题笔记】动态规划

    #[leetcode刷题笔记]动态规划 石子游戏 public boolean stoneGame(int[] piles) {int N = piles.length;// dp[i][j] is ...

最新文章

  1. 关于条件随机场的一些补充
  2. 《疯狂JAVA讲义》3
  3. ConcurrentMap接口
  4. 快速排序(C++版)
  5. 计算机应用虚拟仿真实验答案,虚拟仿真 实验教学+.ppt
  6. 关于Angular @Injectable的几种测试情况
  7. 看完这15张动图,秒懂万有引力与航天难点!
  8. 清翔电子单片机原理图stc89c52_1000. 电子编程入门到工程师--从看得到开始
  9. 如果不是心中还有梦,又能忍住多少痛?
  10. stixel_world+Multi_stioxel_world+semantic_stixel_world知识拓展
  11. averyboy的区间2
  12. 使用VS2017和Qt编译OpenCV
  13. 回声消除原理(AEC)
  14. 基于Arduino的智能环境监测与反馈系统
  15. c++项目 生成dll文件
  16. Tinify API批处理压缩PNG和JPG(Java版本)
  17. ubuntu16.0.4安装GNOME3
  18. 使用google的jib, 发布Docker镜像到阿里云
  19. 有参构造方法的作用和无参构造方法的作用
  20. ViewOverlay 浮层

热门文章

  1. WebSocket websockets
  2. Android实时直播,一千行java搞定不依赖jni,延迟0.8至3秒,强悍移动端来袭
  3. socket 和 SocketServer 模块
  4. 什么是相关性以及为什么需要初始化它?
  5. Delphi中用Sender参数实现代码重用
  6. [转]用户空间和内核空间,进程上下文和中断上下文
  7. luogu 1337
  8. new方法、定制属性、描述符、装饰器
  9. 如何用新安装的jdk替换掉Linux系统默认jdk
  10. 哲学家就餐问题 C语言实现