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"] ]
public class Solution {
ArrayList<ArrayList<String>> res;
ArrayList<String> partition;
public ArrayList<ArrayList<String>> partition(String s) {
// Start typing your Java solution below
// DO NOT write main() function
res = new ArrayList<ArrayList<String>>();
partition = new ArrayList<String>();
partitioning(s);
return res;
}
public void partitioning(String s) {
int n = s.length();
if (n == 0) {
ArrayList<String> temp = new ArrayList<String>();
for(int i = 0; i < partition.size(); i ++){
temp.add(partition.get(i));
}
res.add(temp);
return;
}
for (int i = 0; i < n; i++) {
String begin = s.substring(0, i + 1);
if (isPalindrome(begin)) {
partition.add(begin);
partitioning(s.substring(i + 1));
partition.remove(partition.size() - 1);
}
}
}
public boolean isPalindrome(String s) {
if (s.length() <= 1)
return true;
int begin = 0;
int end = s.length() - 1;
while (begin < end) {
if (s.charAt(begin) == s.charAt(end)) {
begin++;
end--;
} else
return false;
}
return true;
}
}