String permutations recursive

by Alex Myronov

JavaScript

function permutateStr(str) {
	if (str.length <= 1) {
	  return [str]
  }
  
  const current = str[0]
  const permutated = permutateStr(str.slice(1))
  
  const permutations = []
	permutated.forEach((permutation) => {
    for (let i = 0; i <= permutation.length; i++) {
	  	permutations.push(
    		`${permutation.slice(0, i)}${current}${permutation.slice(i)}`
    	)
  	}
  })
  return permutations
}

console.log(permutateStr('cats'))