Skip to content

Instantly share code, notes, and snippets.

@aldraco
Created March 1, 2015 23:02
Show Gist options
  • Save aldraco/2525e2dc1b491ff91a77 to your computer and use it in GitHub Desktop.
Save aldraco/2525e2dc1b491ff91a77 to your computer and use it in GitHub Desktop.
No Repeats WIP
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