题目
解题
// javascript
var permutation = function(S) {
const map = buildMap(S), result = new Array();
getPerms(map, "", S.length, result);
return result;
};
const buildMap = (S) => {
const map = new Map();
for (const char of S) {
map.set(char, (map.get(char) || 0) + 1);
}
return map;
};
const getPerms = (map, prefix, remaining, result) => {
if (remaining === 0) {
result.push(prefix);
return;
}
for (const char of map.keys()) {
const count = map.get(char);
if (count > 0) {
map.set(char, count - 1);
getPerms(map, prefix + char, remaining - 1, result);
map.set(char, count); // 撤回
}
}
};