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; } }