Created
March 1, 2015 23:02
-
-
Save aldraco/2525e2dc1b491ff91a77 to your computer and use it in GitHub Desktop.
No Repeats WIP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function permAlone(str) { | |
str = str.split(''); | |
// find total permutations, or (str.length!) | |
// subtract possible pair perms | |
// n = # of unique letters | |
// x = # of each repeated letter | |
// pair perms = n! * x! | |
var len = str.length; | |
var letters = uniqueLetters(str); | |
var n = letters.length; | |
if (n===1) { | |
return 0; | |
} | |
console.log(n); | |
var allPerm = factorial(len); | |
var pairPerm = factorial(n) * factorial(len-n); | |
return allPerm - pairPerm; | |
function factorial(num) { | |
if (num === 0) return 0; | |
if (num === 1) return 1; | |
else return num*factorial(num-1); | |
} | |
function uniqueLetters(str) { | |
var letters = []; | |
str.forEach(function(letter, index) { | |
if (letters.indexOf(letter) < 0) { | |
letters.push(letter); | |
} | |
}); | |
return letters; | |
} | |
} | |
permAlone('aab'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment