全排列问题
1 let str = "abbd" 2 function Arrange(str) { 3 if (str.length<=2) { 4 return str.length===2?[str,str[1]+str[0]]:[str] 5 } 6 let arrRes = [] 7 let arrStr = str.split(''); 8 for (let i = 0; i < arrStr.length; i++) { 9 let s1= str.slice(0,i) 10 let s2= str.slice(i+1) 11 let arr = Arrange(s1+s2); 12 let res = arr.map(e=>e+str[i]) 13 arrRes = Array.from(new Set([...arrRes,...res])) 14 } 15 return arrRes 16 } 17 console.log(Arrange(str));
1 function Arrange1(str) { 2 if (str.length<=2) { 3 return str.length===2?[str,str[1]+str[0]]:[str] 4 } 5 6 return str.split('').reduce((l,n,i) => { 7 let arr = Arrange1(str.slice(0, i)+str.slice(i+1)) 8 return [...l,...Array.from(new Set(arr.map(e=>n+e)))] 9 },[]); 10 } 11 let str = "abbd" 12 console.log(Arrange1(str));