题解 | #字符串的排列#

字符串的排列

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

#include <string>
#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @return string字符串vector
     */
    vector<string> Permutation(string str) {
        // write code here
        vector<string>ans;
        string combine;
        vector<int>vis;
        vis.resize(str.size());
        sort(str.begin(),str.end());
        backtrack(ans, combine, vis, str, 0);
        return ans;

    }

    void backtrack(vector<string>&ans,string combine,vector<int>&vis,string str,int idx){
        if(idx==str.size()){
            ans.push_back(combine);
        }

        
        for(int i=0;i<str.size();++i){
            if(vis[i]||(i>0&&str[i]==str[i-1]&&!vis[i-1])){
                continue;
            }
            combine.push_back(str[i]);
            vis[i]=1;
            backtrack(ans, combine, vis, str, idx+1);
            combine.pop_back();
            vis[i]=0;
            
        }

    }
};

全部评论

相关推荐

野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务