首页 > 其他 > 详细

LeetCode: Palindrome Partitioning

时间:2014-02-04 02:11:20      阅读:429      评论:0      收藏:0      [点我收藏+]

Given a string s, partition s such that every substring of the partition is a palindrome.

Return all possible palindrome partitioning of s.


像这种求所有可能性的问题就不适合用DP做,比较适合dfs。

思路就是从头扫描,按顺序将palindrome放入结果中。

需要注意的是,这里判断是否为palindrome的方法是,将string反转,然后比较和原来的是否相同。

bubuko.com,布布扣
 1 public static ArrayList<ArrayList<String>> partition(String s) {
 2         ArrayList<String> tmp = new ArrayList<String>();
 3         ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
 4         partition(s, 0, tmp, result);
 5         return result;
 6     }
 7     public static void partition(String s, int position, ArrayList<String> tmp, ArrayList<ArrayList<String>> result) {
 8         if (position == s.length()) {
 9             result.add(new ArrayList<String>(tmp));
10             return;
11         }
12         else {
13             for (int i=position; i<s.length(); i++) {
14                 String w = s.substring(position, i+1);
15                 if (isPalindrome(w)) {
16                     tmp.add(w);
17                     partition(s, i+1, tmp, result);
18                     tmp.remove(tmp.size()-1);
19                 }
20             }
21         }
22     }
23     public static boolean isPalindrome(String a) {
24         StringBuilder x = new StringBuilder(a).reverse();
25         return x.toString().equals(a);
26     }
bubuko.com,布布扣

LeetCode: Palindrome Partitioning

原文:http://www.cnblogs.com/longhorn/p/3537534.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!