# 分割回文串

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

 

示例 1:

输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]

示例 2:

输入:s = "a"
输出:[["a"]]

 

提示:

## template ```cpp #include using namespace std; class Solution { public: bool isPali(string s) { for (int i = 0; i < s.length() / 2; i++) if (s[i] != s[s.length() - i - 1]) return false; return true; } void dfs(vector> &ans, vector &tmp, int n, string s) { if (n == s.length()) { ans.push_back(tmp); return; } for (int i = n; i < s.length(); i++) { if (isPali(s.substr(n, i - n + 1))) { tmp.push_back(s.substr(n, i - n + 1)); dfs(ans, tmp, i + 1, s); tmp.pop_back(); } } } vector> partition(string s) { vector> ans; vector tmp; dfs(ans, tmp, 0, s); return ans; } }; ``` ## 答案 ```cpp ``` ## 选项 ### A ```cpp ``` ### B ```cpp ``` ### C ```cpp ```