1class Solution {2public:3bool check(string k) {4string l = k;5reverse(l.begin(), l.end());6if (k == l) return true;7return false;8}9void solve(string &s, vector<vector<string>> &ans, vector<string> temp, int pos) {10if (pos >= s.size()) {11ans.push_back(temp);12return;13}14string m;15for (int i = pos; i < s.size(); i++) {16m += s[i];17if (check(m)) {18temp.push_back(m);19solve(s, ans, temp, i + 1);20temp.pop_back();21}22}23}24vector<vector<string>> partition(string s) {25vector<vector<string>> ans;26vector<string> temp;27solve(s, ans, temp, 0);28return ans;29}30};