输入一个字符串,按字典序打印出该字符串中字符的所有排列。
例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc, acb,bac, bca , cab和cba.
思路:使用回溯法.
记录一个字符(temp) ,用于存储当前需要进入排列的字符
记录一个字符串(current) ,用于记录当前已经排列好的字符
*记录一个队列(queue) ,用于存储还未被排列的字符
1.每次排列将temp添加到current.
2,如果queue为空,则本次排列完成,将curret加入到结果数组中,结束递归如果queue不为空,说明还有未排列的字符.
3,递归排列queue中剩余的字符.
为了不影响后续排列,每次递归完成,将当前递归的字符temp加回队列
let a = '123';function foo(str){if(typeof(str) != 'string'){return '不想转类型了,可以写转换类型的方法'}let data= [...str];function fn(data,arr){if(data.length == arr.length){return console.log(arr.join());}// console.log(data)for(let i = 0;i < data.length;i++){if (arr.indexOf(data[i]) < 0){arr.push(data[i]);fn(data, arr);arr.pop();}}}fn(data,[]);}foo(a,[])
