首页 > 代码库 > [LeetCode]Palindrome Partitioning 找出所有可能的回文组合
[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; } };
[LeetCode]Palindrome Partitioning 找出所有可能的回文组合
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。