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

简介:

给定一个字符串,切割字符串,这样每个子字符串是一个回文字符串。

要找出所有可能的组合。

办法:暴力搜索+回溯

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;
    }
};


版权声明:本文博主原创文章,博客,未经同意不得转载。






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4886250.html,如需转载请自行联系原作者


相关文章
|
7月前
|
Go
golang力扣leetcode 479.最大回文数乘积
golang力扣leetcode 479.最大回文数乘积
42 0
|
算法
【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】
【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】
45 0
|
程序员
【Leetcode】面试题 01.02. 判定是否互为字符重排、面试题 01.04. 回文排列
目录 面试题 01.02. 判定是否互为字符重排 面试题 01.04. 回文排列
62 0
LeetCode | 234. 回文链表
LeetCode | 234. 回文链表
|
4月前
|
Python
【Leetcode刷题Python】234.回文链表
两种判断链表是否为回文的方法:使用栈和拆分为两个链表后反转对比,并给出了相应的Python代码实现。
25 0
|
7月前
题目----力扣--回文链表
题目----力扣--回文链表
41 0
|
7月前
|
索引
【力扣刷题】回文链表、环形链表、合并两个有序链表
【力扣刷题】回文链表、环形链表、合并两个有序链表
41 0
|
7月前
【力扣】409.最长回文串
【力扣】409.最长回文串
|
7月前
|
C语言 C++ 索引
【力扣】141. 环形链表、160. 相交链表、206.反转链表、234. 回文链表
【力扣】141. 环形链表、160. 相交链表、206.反转链表、234. 回文链表
|
7月前
|
Go
golang力扣leetcode 1332. 删除回文子序列
golang力扣leetcode 1332. 删除回文子序列
36 0