题解 | #字符串的排列#

字符串的排列

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

class Solution {
public:
    vector<string> res;
    void dfs(string str, int x) { // str是排列的string,x是排列到的string的下标
        if(x == str.size() - 1) { // 遍历到最后一个数, 证明当前的string已经排列好
            res.push_back(str);
            return;
        }
        set<int> st; // char 可以转变为int set存储已经排列好的字符
        for(int i = x; i < str.size(); i++) {
            if(st.find(str[i]) != st.end()) // 剪枝操作,如果要排列的字符已经经过了排列,则不进行后续操作,进行剪枝
                continue;
            st.insert(str[i]);
            swap(str[x], str[i]);
            dfs(str, x + 1);
            swap(str[x], str[i]);
        }
    }
    vector<string> Permutation(string str) {
        dfs(str, 0);
        return res;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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