return ans; } private: boolisPalindromic(string s, int start, int end){ bool res = true; while (end > start) { if (s[start] != s[end]) { res = false; break; } start++; end--; }
return res; }
voiddfs(string s, vector<string>& subAns, vector<vector<string>>& ans, int start){ int n = s.length(); if (start == 0) subAns.clear(); elseif (start == n) { ans.push_back(subAns); return; }
for (int i = start; i < n; i++) { if (isPalindromic(s, start, i)) { subAns.push_back(s.substr(start, i - start + 1)); dfs(s, subAns, ans, i + 1); subAns.pop_back(); } } } };