题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
示例1
输入
"ab"
返回值
["ab","ba"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| /*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
void PermutationCore(string str,int begin)
{
if(str.length()== begin)
{
result.push_back(str);
return;
}
for(int i=begin;i<str.length();i++)
{
if(i!=begin&&str[i]==str[begin])
continue;
swap(str[begin], str[i]);
PermutationCore(str,begin+1);
}
}
vector<string> Permutation(string str) {
if(str.length()==0)
return result;
PermutationCore(str,0);
return result;
}
private:
vector<string> result;
};
|