给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
例如,给出 s = "aab",
返回
[
["aa","b"],
["a","a","b"]
]
详见:https://leetcode.com/problems/palindrome-partitioning/description/
class Solution { public: vector<vector<string>> partition(string s) { vector<vector<string>> res; vector<string> out; if(s.size()==0||s.empty()) { return res; } helper(s,0,out,res); return res; } void helper(string &s,int start,vector<string> &out,vector<vector<string>> &res) { if(start==s.size()) { res.push_back(out); return; } for(int i=start;i<s.size();++i) { if(isPalindrome(s,start,i)) { out.push_back(s.substr(start,i-start+1)); helper(s,i+1,out,res); out.pop_back(); } } } bool isPalindrome(string &s,int start,int end) { while(start<end) { if(s[start]!=s[end]) { return false; } ++start; --end; } return true; } };