美文网首页
2019-09-06[剑指offer-]字符串的排序

2019-09-06[剑指offer-]字符串的排序

作者: Coding破耳 | 来源:发表于2019-11-15 22:22 被阅读0次

题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

class Solution {
public:
    vector<string> Permutation(string str) {
        vector<string> tvec;
        if(str.length() == 0)
        {
            return tvec;
        }
        
        Permutation(str,0,tvec);
        
        sort(tvec.begin(),tvec.end());
        tvec.erase(unique(tvec.begin(),tvec.end()),tvec.end());
        
        return tvec;
    }
    
    void Permutation(string& str,int n,vector<string>& tResVec)
    {
        int length = str.length();
        if(length == n)
        {
            tResVec.push_back(str);
            return;
        }
        
        for(int i = n;i<length;++i)
        {
            char tmp = str[i];
            str[i] = str[n];
            str[n] = tmp;
            
            Permutation(str,n+1,tResVec);
            
            tmp = str[i];
            str[i] = str[n];
            str[n] = tmp;
        }
    }
};

相关文章

网友评论

      本文标题:2019-09-06[剑指offer-]字符串的排序

      本文链接:https://www.haomeiwen.com/subject/puceyctx.html