http://leetcode.com/onlinejudge#question_131
Question:
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"]
]
Solution:
This is also a DP. I like DP :D
Question:
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"]
]
Solution:
This is also a DP. I like DP :D
import java.util.ArrayList;
public class Partition {
public ArrayList<ArrayList<String>> partition(String s) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
int length = s.length();
if(length ==1){
ArrayList<String> a = new ArrayList<String>();
a.add(s);
result.add(a);
return result;
}
for(int i=0; i< length; i++){
String str = s.substring(0, i+1);
if(isP(str)){
if(i+1 == length){
ArrayList<String> a = new ArrayList<String>();
a.add(str);
result.add(a);
}else {
ArrayList<ArrayList<String>> temp = partition(s.substring(i+1));
for(ArrayList<String> a : temp){
a.add(0, str);
result.add(a);
}
}
}
}
return result;
}
public boolean isP(String s){
int length = s.length();
if(length == 1 || length ==0) return true;
int i=0; int j= length-1;
while(s.charAt(i) == s.charAt(j) && i<j){
i++;j--;
}
if(i<j) return false;
else return true;
}
public static void printResult (ArrayList<ArrayList<String>> array){
for(ArrayList<String> a: array){
for(String s: a){
System.out.print("\t" + s);
}
System.out.println();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "ddfdsfadf";
Partition p = new Partition();
Partition.printResult(p.partition(str));
}
}