面试题38
示例:
输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]限制:
Solutions
class Solution {
public:
vector<string> res;
vector<int> m;
string curs;
void dfs(string & s) {
if (curs.size() == s.size())
res.push_back(curs);
else {
for (int c = 0; c < 26; c++) {
if (m[c] <= 0)
continue;
m[c]--;
curs.push_back('a' + c);
dfs(s);
curs.pop_back();
m[c]++;
}
}
}
vector<string> permutation(string s) {
m = vector<int>(26);
for (auto & c : s)
m[c - 'a']++;
dfs(s);
return res;
}
};Last updated