forked from TheAlgorithms/JavaScript
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCreatePermutations.js
More file actions
Latest commit
38 lines (33 loc) · 1.05 KB
/
Copy pathCreatePermutations.js
File metadata and controls
38 lines (33 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
a permutation of a set is, loosely speaking, an arrangement of its members into a sequence or linear order, or if the set is already ordered, a rearrangement of its elements.
The word "permutation" also refers to the act or process of changing the linear order of an ordered set
More at : https://en.wikipedia.org/wiki/Permutation
*/
constcreatePermutations=(str)=>{
// convert string to array
constarr=str.split('')
// get array length
conststrLen=arr.length
// this will hold all the permutations
constperms=[]
letrest
letpicked
letrestPerms
letnext
// if strLen is zero, return the same string
if(strLen===0){
return[str]
}
// loop to the length to get all permutations
for(leti=0;i<strLen;i++){
rest=Object.create(arr)
picked=rest.splice(i,1)
restPerms=createPermutations(rest.join(''))
for(letj=0,jLen=restPerms.length;j<jLen;j++){
next=picked.concat(restPerms[j])
perms.push(next.join(''))
}
}
returnperms
}
export{createPermutations}