Beispiel #1
0
    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;
 }
Beispiel #3
0
 vector<vector<string>> partition(string s) {
 vector<vector<string> >  ans;
 vector<string> temp;
 palPart (ans,temp,s,0);
 return ans;
 }