class Solution
{
public:
void quanpailie(vector<string> &shuchu, string &temp, int start, int end)
{
if (start == end)
{
shuchu.push_back(temp);
}
for (int i = start; i <= end; ++i)
{
if (temp[start] == temp[i]&&i!=start)
{
continue;
}
else
{
swap(temp[start], temp[i]);
quanpailie(shuchu, temp, start + 1, end);
swap(temp[start], temp[i]);
}
}
}
vector<string> Permutation(string str)
{
int start = 0;
int end = (str.size() - 1);
vector<string> re;
quanpailie(re, str, 0,end);
sort(re.begin(), re.end());
return re;
}
};