给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ]
class Solution {
public:
vector<vector<string> >res;
int len;
vector<vector<string> > partition(string s)
{
len = s.size();
if(len == 0)
return res;
vector<string> v;
DFS(v, s, 0);
return res;
}
void DFS(vector<string> &v, string str, int pos)
{
if(pos >= len)
{
res.push_back(v);
}
for(int i = pos; i < len; i++)
{
int flag = true;
for(int j = 0; j <= (i - pos + 1) / 2; j++)
{
if(str[pos + j] != str[i - j])
{
flag = false;
break;
}
}
if(!flag)
continue;
v.push_back(string(str.begin() + pos, str.begin() + i + 1));
DFS(v, str, i + 1);
v.pop_back();
}
}
};