给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。
返回s所有可能的回文串分割方案。
给出 s = "aab"
,返回
[ ["aa", "b"], ["a", "a", "b"]
]
class Solution { public: /** * @param s: A string * @return: A list of lists of string */ bool isHuiWen(string s) { int n = s.length(); int i = 0; int j = n - 1; while(i<j) { if(s[i]!=s[j]) return false; ++i; --j; } return true; } void find(string s, vector<string> &vs, int pos, vector<vector<string>> &result) { int n = s.length(); if(pos == n) { result.push_back(vs); return; } for(int j=pos; j<=n-1; ++j) { if(isHuiWen(s.substr(pos,j-pos+1))) { vs.push_back(s.substr(pos,j-pos+1)); find(s, vs, j+1, result); vs.pop_back(); } } } vector<vector<string>> partition(string s) { // write your code here vector<vector<string>> result; vector<string> re; find(s, re, 0, result); return result; } };