例如,字符串“AAABBB”将有排列:
"ABAABB",
"巴巴",
"ABABAB",
等等
什么是生成排列的好算法? (它的时间复杂度是多少?)
最佳答案
对于多重集,您可以按位置递归求解(JavaScript 代码):
function f(multiset,counters,result){
if (counters.every(x => x === 0)){
console.log(result);
return;
}
for (var i=0; i<counters.length; i++){
if (counters[i] > 0){
_counters = counters.slice();
_counters[i]--;
f(multiset,_counters,result + multiset[i]);
}
}
}
f(['A','B'],[3,3],'');
关于列出具有重复字母的字符串的唯一排列的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40752319/