题目:Palindrome Partitioning
难度:medium
问题描述:
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"] ]
解题思路:判断回文数+DFS即可。很简单,代码如下:
public class Solution {
List<List<String>> res=new ArrayList<>();
public List<List<String>> partition(String s) {
DFS(s,new ArrayList<String>());
return res;
}
private void DFS(String s,List<String> list){
if(s.length()<1){
res.add(new ArrayList<>(list));
return;
}
for(int i=1;i<=s.length();i++){
String str=s.substring(0, i);
if(this.isPalindrom(str)){
list.add(str);
DFS(s.substring(i),list);
list.remove(list.size()-1);
}else{
continue;
}
}
}
private boolean isPalindrom(String s){
//s必须是》=1的字符串
int p1=0;
int p2=s.length()-1;
int len=(s.length()+1)/2;
for(int i=0;i<len;i++){
if(s.charAt(p1++)!=s.charAt(p2--))
return false;
}
return true;
}
}