剑指offer-字符串全排列(有重复值)

来源:互联网 发布:js截取字符串后四位 编辑:程序博客网 时间:2024/05/16 15:23

一、问题描述

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 

输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

二、思路

与 Permutations II思路完全一致。

三、代码

class Solution {public:    vector<string> Permutation(string str) {    vector<string> vec;        if(str.size() == 0) return vec;        change(str,0,str.size(),vec);return vec;    }private:void change(string s, int begin,int end,vector<string> &vec){        if(begin == end)            vec.push_back(s);        else{            for(int i = begin; i < end; ++i){                if(i != begin && s[begin] == s[i])                continue;                swap(s[begin],s[i]);                change(s,begin + 1,end,vec);            }        }    }};


0 0