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 }

 

posted @ 2018-09-23 23:58  jasoncool1  阅读(113)  评论(0编辑  收藏  举报