import java.util.*;
public class Solution {
ArrayList<ArrayList<String>> res=new ArrayList();
ArrayList<String> temp=new ArrayList();
public ArrayList<ArrayList<String>> partition(String s) {
dfs(s,0);
return res;
}
void dfs(String s ,int pos){
int len=s.length();
if(pos>=len){
ArrayList<String> temp1=(ArrayList<String>)temp.clone();
res.add(temp1);
return;
}
for (int i = 1; i <= len-pos; i++){
String sub = s.substring(pos, pos+i);
if (isPalindrome(sub)){
temp.add(sub);
dfs(s, pos + i);
temp.remove(temp.size()-1);
}
}
}
boolean isPalindrome(String s){
int len=s.length();
int mid=len/2;
if(len==1)return true;
if(len%2==1)mid++;
String last=new StringBuffer(s.substring(mid)).reverse().toString();
if(s.substring(0,len/2).equals(last))
return true;
else return false;
}
public static void main(String[] args)
{
Solution s = new Solution();
ArrayList<ArrayList<String>> result = s.partition("aabaa");
System.out.println(result);
}
}
Palindrome Partitioning
最新推荐文章于 2022-05-28 21:54:30 发布