LeetCode - Palindrome Partitioning

来源:互联网 发布:js怎么控制css3动画 编辑:程序博客网 时间:2024/05/07 08:49

Given a string s, partition s such that every substring of the partition is a palindrome.

Return all possible palindrome partitioning of s.

For example, given s = "aab",
Return

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

class Solution {public:        void partition(vector<vector<string> >&result, vector<vector<bool> >&matrix,vector<string>& tmp,string s,int begin){if(begin==s.size()){result.push_back(tmp);return;}for(int i=begin;i<s.size();i++){if(matrix[begin][i]){string t(s.begin()+begin,s.begin()+i+1);tmp.push_back(t);partition(result,matrix,tmp,s,i+1);tmp.pop_back();}}    }    vector<vector<string> > partition(string s) {vector<vector<string> > result;if(s.empty()||s.size()==0){return result;}    vector<vector<bool> > matrix(s.size(),vector<bool>(s.size(),true));//记录s[i...j]是否为回文for(int i=s.size()-2;i>=0;i--){for(int j=i+1;j<s.size();j++){if(s[i]==s[j]){matrix[i][j]=matrix[i+1][j-1];}else{matrix[i][j]=false;}}} vector<string> tmp;partition(result,matrix,tmp,s,0);return result;    }};
原创粉丝点击