首页 > 其他 > 详细

[Leetcode]-- Palindrome Partitioning

时间:2014-02-04 10:29:40      阅读:309      评论: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.

For example, given s = "aab",
Return

  [
    ["aa","b"],
    ["a","a","b"]
  ]

【解题思路】

DFS 找到s的所有的substring, 判断是否是palindrome, 如果是添加到result中去

bubuko.com,布布扣
public class Solution {
    public ArrayList<ArrayList<String>> partition(String s) {
        // Start typing your Java solution below
        // DO NOT write main() function
        ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
        ArrayList<String> output = new ArrayList<String>();
        int depth = 0, len = s.length();
        
        palinPartition(s, 0, len, output, result);
        return result;
    }
    
    public void palinPartition(String s, int start, int len, ArrayList<String> output,
                        ArrayList<ArrayList<String>> result){
        if(start == len){
            ArrayList<String> tmp = new ArrayList<String>();
            tmp.addAll(output);
            result.add(tmp);
            return;
        }
        
        for(int i = start; i < len; i++){
            if(isPalindrome(s, start, i)){
                output.add(s.substring(start, i + 1));
                palinPartition(s, i + 1, len, output, result);
                output.remove(output.size() - 1);
            }
        }
        
    }
    
    public boolean isPalindrome(String s, int start, int end){
        while(start < end){
            if(s.charAt(start) != s.charAt(end)){
                return false;
            }
            start ++;
            end --;
        }
        
        return true;
    }
}
bubuko.com,布布扣

[Leetcode]-- Palindrome Partitioning

原文:http://www.cnblogs.com/RazerLu/p/3537751.html

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