LeetCode刷题笔记-回溯法-分割回文串
题目描述:
给定一个字符串 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刷题笔记-回溯法-分割回文串相关推荐
- 【python】一道LeetCode搞懂递归算法!#131分割回文串 #以及刷LeetCode的一点点小心得 [数据结构与算法基础]
题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串.返回 s 所有可能的分割方案. # 示例 输入: "aab" 输出: [["aa",&q ...
- python【力扣LeetCode算法题库】409-最长回文串(数学 计数器)
最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字 ...
- LeetCode刷题笔记(算法思想 四)
LeetCode刷题笔记(算法思想 四) 七.动态规划 斐波那契数列 70. 爬楼梯 198. 打家劫舍 213. 打家劫舍 II 信件错排 母牛生产 矩阵路径 64. 最小路径和 62. 不同路径 ...
- leetcode刷题笔记——二分查找
leetcode刷题笔记--二分查找 目前完成的贪心相关的leetcode算法题序号: 中等:80,81 困难:4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com ...
- LeetCode刷题笔记2——数组2
LeetCode刷题笔记2--数组2 重塑数组 题目 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原 ...
- 小何同学的leetcode刷题笔记 基础篇(01)整数反转
小何同学的leetcode刷题笔记 基础篇(01)整数反转[07] *** [01]数学取余法*** 对数字进行数位操作时,常见的方法便是用取余的方法提取出各位数字,再进行操作 操作(1):对10取余 ...
- LeetCode刷题笔记汇总
LeetCode刷题笔记汇总 第一次刷LeetCode写的一些笔记. 1.两数之和 3.无重复字符的最长子串 15.三数之和 18.四数之和 19.删除链表的倒数第 N 个结点 20.有效的括号 21 ...
- Leetcode刷题笔记(代码随想录)
1 数组 1.1 二分查找 第一种写法:我们定义 target 是在一个在左闭右闭的区间里,也就是[left, right] .区间的定义这就决定了二分法的代码应该如何写,因为定义target在[le ...
- 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)
LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...
- 【leetcode刷题笔记】动态规划
#[leetcode刷题笔记]动态规划 石子游戏 public boolean stoneGame(int[] piles) {int N = piles.length;// dp[i][j] is ...
最新文章
- 关于条件随机场的一些补充
- 《疯狂JAVA讲义》3
- ConcurrentMap接口
- 快速排序(C++版)
- 计算机应用虚拟仿真实验答案,虚拟仿真 实验教学+.ppt
- 关于Angular @Injectable的几种测试情况
- 看完这15张动图,秒懂万有引力与航天难点!
- 清翔电子单片机原理图stc89c52_1000. 电子编程入门到工程师--从看得到开始
- 如果不是心中还有梦,又能忍住多少痛?
- stixel_world+Multi_stioxel_world+semantic_stixel_world知识拓展
- averyboy的区间2
- 使用VS2017和Qt编译OpenCV
- 回声消除原理(AEC)
- 基于Arduino的智能环境监测与反馈系统
- c++项目 生成dll文件
- Tinify API批处理压缩PNG和JPG(Java版本)
- ubuntu16.0.4安装GNOME3
- 使用google的jib, 发布Docker镜像到阿里云
- 有参构造方法的作用和无参构造方法的作用
- ViewOverlay 浮层