Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions String/CreatePurmutations.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
const createPermutations = (str) => {
// convert string to array
const arr = str.split('')

// get array length
const strLen = arr.length
// this will hold all the permutations
const perms = []
let rest
let picked
let restPerms
let next

// if strLen is zero, return the same string
if (strLen === 0) { return [str] }
// loop to the length to get all permutations
for (let i = 0; i < strLen; i++) {
rest = Object.create(arr)
picked = rest.splice(i, 1)

restPerms = createPermutations(rest.join(''))

for (let j = 0, jLen = restPerms.length; j < jLen; j++) {
next = picked.concat(restPerms[j])
perms.push(next.join(''))
}
}
return perms
}

console.log(createPermutations('abc')) // should print ["abc", "acb", "bac", "bca", "cab", "cba"]