题解 | #字符串的排列#

字符串的排列

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

跟之前那个有重复数字的数组全排列一样

class Solution {
public:
    void backtrack(vector<string> &result,string str,vector<int> &visited,string tmp,int length){
        if(tmp.size()==length){
            result.push_back(tmp);
            return;
        }
        
        for(int i=0;i<length;++i){ 
            if(visited[i]) continue;  //  纵向
            if(i>0 && str[i]==str[i-1] && !visited[i-1]) continue; // 横向
            
            visited[i] = 1;
            tmp.push_back(str[i]);
            backtrack(result,str,visited,tmp,length);
            visited[i] = 0 ;
            tmp.pop_back();
        }
    }
    
    vector<string> Permutation(string str) {
        // 这题不就是重复数组的全排列那题?
        vector<string> result;
        int length = str.size();
        if(length<=0) return result;
        
        sort(str.begin(), str.end());
        vector<int> visited(length,0);
        string tmp;
        
        backtrack(result, str, visited, tmp, length);
        return result;
    
    }
};
全部评论

相关推荐

06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
第一份工作能做外包吗?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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