全排列问题

 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));

 

posted @ 2024-06-21 15:33  这个攻城狮不太冷静  阅读(2)  评论(0编辑  收藏  举报