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: vector< vector<string> > partition(string s){ string::size_type length = s.size(); if(length == 0){ output.clear(); return output; } else{ output.clear(); temper_result.clear(); dfs(0,length,s); return output; } } bool ifpalindrome(string& s){ int i = 0, j = s.length()-1; while(i < j){ if(s[i] != s[j]){ return false; } i++; j--; } return true; } void dfs(int begin, int length, string& s){ if(begin == length){ output.push_back(temper_result); } else{ int i; for(i=begin;i<length;i++){ string mm =s.substr(begin,i-begin+1); if(ifpalindrome(mm)){ temper_result.push_back(mm); dfs(i+1,length,s); temper_result.pop_back(); } } } } private: vector< vector<string> > output; vector<string> temper_result; };