void palPart (vector<vector<string>> &ans,vector<string> &temp,string s,int j){ if(s.size()==0) return; //特殊输入 if(j>s.size()-1){ ans.push_back(temp); return; } //边界条件,很重要 int m,n,l; for(m=s.size()-1;m>=j;m--){ l=j; n=m; while(l<n&&s[l]==s[n]){ l++; n--; }//判断s(j,m)是不是回文 if(l>=n){ temp.push_back(s.substr(j,m-j+1));//子串入栈 palPart(ans,temp,s,m+1);//遍历 temp.pop_back();//遍历完毕,子串出栈 } } }
vector<vector<string>> partition(string s) { vector<vector<string>> palindromes; vector<string> temp; palPart(palindromes, temp, s, 0); return palindromes; }
vector<vector<string>> partition(string s) { vector<vector<string> > ans; vector<string> temp; palPart (ans,temp,s,0); return ans; }