Leetcode047--所有回文子串的组合
Posted 劲火星空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode047--所有回文子串的组合相关的知识,希望对你有一定的参考价值。
一、原题
Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
For example, given s ="aab",
Return
[ ["aa","b"], ["a","a","b"] ]
一、中文
找到一个字符串中所有可能的回文子字符串的组合
三、举例
比如字符串aab,就可以分成 "aa" "b" 和 "a" "a" "b" 两种情况
四、思路
首先要编写一个函数,判断这个函数是否是回文串,然后就可以方便的调用这个函数了。然后就是遍历字符串了,如果字符串从0到第i个位置是一个回文串,然后再使用递归的方式判断后边的字符串,直到字符串的长度为0了就可以了,这个list中就是一套完整的方案了,然后将这个list装入res集合中,依次这样递归,最后返回就可以了。
五、程序
import java.util.*;
public class Solution
public ArrayList<ArrayList<String>> partition(String s)
ArrayList<ArrayList<String>> res = new ArrayList<>();
ArrayList<String> list = new ArrayList<>();
addPalin(res,list,s);
return res;
public static void addPalin(ArrayList<ArrayList<String>> result,ArrayList<String> list,String s)
//当list==0的时候也就是说明这个字符串已经按照相应的的序列分好了
//此时可以将其加进去了
if(s.length() == 0)
result.add(new ArrayList<String>(list));
for(int i = 1; i <= s.length(); i++)
if(!isPali(s.substring(0,i)))
continue;
//这里是从下标0-(i-1)的子串
list.add(s.substring(0,i));
//这里是从下标i开始的子串
addPalin(result,list,s.substring(i));
//这里的移除是为了重新装入新的字符串
list.remove(list.size()-1);
public static boolean isPali(String str)
int i = 0;
int j = str.length()-1;
while(i < j)
if(str.charAt(i) != str.charAt(j))
return false;
i++;
j--;
return true;
以上是关于Leetcode047--所有回文子串的组合的主要内容,如果未能解决你的问题,请参考以下文章