Return all possible palindrome partitioning of s.
For example, given s =
"aab"
,Return
[ ["aa","b"], ["a","a","b"] ]
Solution: backtracking; DFS.
class Solution { public: bool isPalindrome(string s){ string str = s; reverse(str.begin(), str.end()); return str==s; } void partitionHelper(vector<vector<string> > &ret, string s, int cur, vector<string> r){ if(cur==s.size()){ ret.push_back(r); return; } for(int i=s.size()-1; i>=cur; i--){ if(isPalindrome(s.substr(cur, i-cur+1))){ r.push_back(s.substr(cur, i-cur+1)); partitionHelper(ret, s, i+1, r); r.pop_back(); } } } vector<vector<string>> partition(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<vector<string> > ret; if(s.empty()) return ret; int n = s.size(); vector<string> r; partitionHelper(ret, s, 0, r); return ret; } };
No comments:
Post a Comment