题解 | #字符串的排列#

字符串的排列

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

DFS + 回溯

class Solution {
public:
    void perm(int start, string str, set<string> &ans) {
        if (start + 1 == str.size()) {
            ans.insert(str);
            return;
        }
        for (int i = start; i < str.size(); ++i){
            if (i > start && str[i] == str[i-1]) continue;  // 去重
            swap(str[start], str[i]);
            perm(start+1, str, ans);
            swap(str[start], str[i]);
        }
    }

    vector<string> Permutation(string str) {
        if (str.empty()) return {};
        set<string> ans;
        sort(str.begin(), str.end());
        perm(0, str, ans);
        return vector<string>{ans.begin(), ans.end()};
    }
};
全部评论

相关推荐

05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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