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

[LeetCode]Palindrome Partitioning 找出所有可能的回文组合

时间:2014-11-09 11:18:19      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   for   on   2014   art   log   bs   

给定一个串,分割该串,使得每个子串都是回文串。找出所有可能的组合。

方法:暴搜+回溯

class Solution {
public:
	int *b,n;
	vector<vector<string> >ans;
	void dfs(int id,string &s,int len){
		if(id>=n){
			if(len>0){
				vector<string>vt;
				vt.push_back(s.substr(0,b[0]+1));
				for(int i=1;i<len;++i){
					vt.push_back(s.substr(b[i-1]+1,b[i]-b[i-1]));
				}
				ans.push_back(vt);
			}
			return;
		}
		int j,k;
		b[len]=id;
		dfs(id+1,s,len+1);
		for(j=id+1;j<n;++j){
			for(k=0;id+k<j-k&&s[id+k]==s[j-k];++k);
			if(id+k>=j-k){
				b[len]=j;
				dfs(j+1,s,len+1);
			}
		}
	}
	vector<vector<string> > partition(string s) {
		n=s.size();
		if(n==0)return ans;
        if(n==1){
            vector<string>vt;
            vt.push_back(s);
			ans.push_back(vt);
			return ans;
		}
		b=new int[n];
		dfs(0,s,0);
		return ans;
    }
};


[LeetCode]Palindrome Partitioning 找出所有可能的回文组合

标签:blog   io   ar   for   on   2014   art   log   bs   

原文地址:http://blog.csdn.net/cklsoft/article/details/40948045

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