题解 | 字符串的排列

字符串的排列

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

class Solution {
private:
    vector<string> res;
    string path;
    void backtracing(string str,vector<int> & visited){
        if(path.size() == str.size()) {
            res.push_back(path);
        }
        for(int i = 0 ; i < str.size() ; i++){
            if(visited[i] == 1 || str[i] == str[i - 1] && visited[i-1] == 1 ) continue;
            visited[i] = 1;
            path += str[i];
            backtracing(str, visited);
            path.pop_back();
            visited[i] = 0; 
        }
    } 
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @return string字符串vector
     */
    vector<string> Permutation(string str) {
        sort(str.begin(),str.end());
        vector<int> visited(str.size(),0);
        backtracing(str, visited);
        return res;
    }
};

全部评论
先排序, 然后递归 去重:新增跳过条件,如果前一个visited过 且 当前的与之前一致
点赞 回复 分享
发布于 04-10 11:53 上海

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务