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 }