1. 程式人生 > >劍指offer第二十七題【字串的排列】c++實現

劍指offer第二十七題【字串的排列】c++實現

class Solution {
public:
    vector<string> vec;
    bool isSwap(string str,int k,int i){
        for(int j=k;j<i;j++){
            if(str[j]==str[i]){
                return false;
            }
        }
        return true;
    }
    void func(string str,int k){
        if(k==str.size()-1){
            vec.push_back(str);
            return ;
        }
        for(int i=k;i<str.size();i++){
            if(isSwap(str,k,i)){
                swap(str[k],str[i]);
                func(str,k+1);
                swap(str[k],str[i]);
            }
        }
    }
    vector<string> Permutation(string str) {
        if(str.size()==0){
            return vec;
        }
        func(str,0);
        sort(vec.begin(),vec.end());
        return vec;
    }
};