I wrote this function but i'm not sure about the time complexity of it. I have my guesses but i wont include them. here is the code sample.
function generateAllPerms(s: string) {
const result: string[] = []
function perm(curr: string[] = [], sArr: string[]) {
if (sArr.length == 0) result.push(curr.join(''))
else {
for (let i = 0; i < sArr.length; i++) {
let k = sArr[i]
curr.push(k)
sArr.splice(i, 1)
perm(curr, sArr)
curr.pop()
sArr.splice(i, 0, k)
}
}
}
perm([], [...s])
return (result)
}
P.S: is there a way to improve its time complexity ?
In JS...
function generateAllPerms(s) {
const result = []
function perm(curr = [], sArr) {
if (sArr.length == 0) result.push(curr.join(''))
else {
for (let i = 0; i < sArr.length; i++) {
let k = sArr[i]
curr.push(k)
sArr.splice(i, 1)
perm(curr, sArr)
curr.pop()
sArr.splice(i, 0, k)
}
}
}
perm([], [...s])
return (result)
}
console.log(generateAllPerms('abc'))