131. Palindrome Partitioning
1 class Solution { 2 List<List<String>> res = new ArrayList<>(); 3 public List<List<String>> partition(String s) { 4 if(s.length() == 0) return res; 5 dfs(s, 0, new ArrayList<>() ); 6 return res; 7 } 8 9 public void dfs(String s, int start, List<String> list) { 10 if(start == s.length()) { 11 res.add(new ArrayList<>(list)); 12 return; 13 } 14 for(int i = start+1; i <= s.length(); i++) { 15 String sub = s.substring(start, i); 16 if(isPalin(sub)) { 17 list.add(new String(sub)); 18 dfs(s, i, list); 19 list.remove(list.size() - 1); 20 } 21 } 22 } 23 24 public boolean isPalin(String str) { 25 StringBuilder sb = new StringBuilder(str); 26 String str1 = sb.reverse().toString(); 27 return str.equals(str1); 28 } 29 30 }