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

来源:互联网 发布:估值建模 知乎 编辑:程序博客网 时间:2024/05/29 06:56

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

方法:暴搜+回溯

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


0 0