今天突然看到一个字符串排列的算法,考虑自己写一下实在是太难了;
例子:abc
abc acb bca bac cab cba
var permutation = function(s) {
const result = []
if(s){
queue = s.split('')
permutationCore(queue,result)
}
// result.sort()
// return [...new Set(result)]
return result
};
function permutationCore(queue,result,temp="",current=""){
current += temp
if(queue.length === 0){
result.push(current)
return
}
for(let i=0;i<queue.length;i++){
temp = queue.shift()
permutationCore(queue,result,temp,current)
queue.push(temp)
console.log(queue)
}
}
console.log(permutation('abc'))
由于不太好理解。 主要思想是
abc acb
bac bca
cab cba
其实是利用回朔。