码迷,mamicode.com
首页 > 其他好文 > 详细

lintcode 容易题:Palindrome Partitioning 分割回文串

时间:2015-10-10 21:35:07      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

题目:

分割回文串

给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。

返回s所有可能的回文串分割方案。

样例

给出 s = "aab",返回

  [

    ["aa","b"],

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

  ]

解题:

这个题目不好搞啊,需要动态规划

在这里,没有根据动态规划,也解决了,貌似是暴力解决

从下标pos开始,找到下标i使得 pos到i内是回文字符串,再从i+1开始,找到下一个回文串,这样一直找下去。。。

时间复杂度O(n2)

Java程序:

技术分享
public class Solution {
    /**
     * @param s: A string
     * @return: A list of lists of string
     */
    public ArrayList<ArrayList<String>> partition(String s) {
        // write your code here
        ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
        if(s==null)
            return result;
        ArrayList<String> path = new ArrayList<String>();
        helper(s,path,0,result);
        return result;
    }
    private boolean isPalindrome(String s){
        int beg = 0;
        int end = s.length() - 1;
        while(beg<end){
            if(s.charAt(beg)!=s.charAt(end))
                return false;
            beg++;
            end--;
        }
        return true;
    }
    private void helper(String s,ArrayList<String> path,int pos,ArrayList<ArrayList<String>> result){
        if(pos==s.length()){
            result.add(new ArrayList<String>(path));
            return;
        }
        for(int i=pos+1;i<=s.length();i++){
            String prefix = s.substring(pos,i);
            if(!isPalindrome(prefix))
                continue;
            path.add(prefix);
            helper(s,path,i,result);
            path.remove(path.size()-1);
        }
    }
}
View Code

总耗时: 2017 ms

Python list不熟悉,不知无法结局。。。

 
 

lintcode 容易题:Palindrome Partitioning 分割回文串

标签:

原文地址:http://www.cnblogs.com/theskulls/p/4868084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!