#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return string字符串vector
*/
vector<bool> st;
string path;
unordered_set<string> res;
void dfs(string s)
{
if(path.length() == s.length())
{
res.insert(path);
return;
}
for(int i = 0; i < s.length(); i ++)
{
if(!st[i])
{
st[i] = true;
path += s[i];
dfs(s);
path.pop_back();
st[i] = false;
}
}
}
vector<string> Permutation(string str) {
st.resize(str.length(), false);
vector<string> ans;
dfs(str);
for(auto r : res) ans.push_back(r);
sort(ans.begin(), ans.end());
return ans;
}
};