字符串排列

来源:互联网 发布:宁波plc编程招聘 编辑:程序博客网 时间:2024/05/23 00:21

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。


class Solution {

public:
      //res表示传回结果。
    void permute(string s,int k,vector<string> &res)
        {
          //如果是最后一个数字
            if(k==s.size()-1) res.push_back(s);
             else
             {
                 for(int i=k;i<s.size();i++)
                     {
                     if(i!=k&&s[i]==s[k]) continue;
                       swap(s[i],s[k]);
                     permute(s,k+1,res);
                       swap(s[i],s[k]);
                     }
             }


                
        
       }
    
    vector<string> Permutation(string str) {
       ///2017-7-9
        //周日 雨。
        //1 递归
        //2  
        vector<string> res;
        if(str.size()==0) return res;
       // int k=0;
       // sort(str.begin(),str,end());
        permute(str,0,res);
        return res;
        
    }
    //param@A
    //s表示字符串
    //k表示起始点
  
};