题解 | #字符串的排列#

字符串的排列

http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7

c++ 全排列问题 回溯方法,最好使用一个vector<bool>用来表示有没有使用过。去重也是需要注意的地方</bool>

class Solution {
public:
    vector<string> ans;
    string path="";
    void backtracking(vector<char>& dic,vector<bool> used){
        if(path.size()==dic.size()){
            ans.push_back(path);
            return;
        }
        for(int i=0;i<dic.size();i++){
            if(used[i]) continue;
            if(i>0&&dic[i]==dic[i-1]&&!used[i-1]) continue;
            used[i]=true;
            path.push_back(dic[i]);
            backtracking(dic,used);
            path.pop_back();
            used[i]=false;
        }
    }
    vector<string> Permutation(string str) {
        vector<char> dic{str.begin(),str.end()};
        vector<bool> used(str.size(),false);
        sort(dic.begin(),dic.end());
        backtracking(dic, used);
        return ans;
    }
};
全部评论

相关推荐

07-22 13:50
门头沟学院 Java
仁者伍敌:其实能找到就很好了,当然收支能抵
点赞 评论 收藏
分享
求offer的大角牛:简历写的第一乱,没有突出重点,第二项目太多太杂看不出来有啥核心技术,第三自我评价太多了,第四获得的荣誉没啥含金量,可以不写,反正问题不少
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务