题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
class Solution {
public:
set<string> myset;
vector<string> Permutation(string nums) {
vector< string > ans;
if(nums == "")
return ans;
string track;
backtrack(nums, track, ans);
return ans;
}
void backtrack(string& nums, string& track, vector< string >& ans)
{
if (0 == nums.size())
{
/* code */
if(myset.find(track) == myset.end())
{
myset.insert(track);
ans.push_back(track);
}
}
else
{
for (int i = 0; i < nums.size(); ++i)
{
/* code */
char n = nums[i];
track.push_back(n);
nums.erase(nums.begin()+i);
// 进行下一步决策
backtrack(nums, track, ans);
nums.insert(i,1,n);
track.pop_back();
}
}
}
};