题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这本质上是个排列组合问题。只是加了去除重复的情况。
如果假如输入没有重复,则可以建立两个集合set,一个集合存放尚未排列过的元素,一个集合存放已经排列过的元素。然后依次将未排列的集合中的元素移入已排列集合中。递归实现移入的过程。
如果输入中有重复元素,则不能用集合set装元素,因为set自动去除重复元素。所以可以用vector装元素。
以下是具体实现代码:
vector<string> Permutation(string str) {