Skip to content

Instantly share code, notes, and snippets.

@OriginUnknown
Created October 22, 2015 15:25
Show Gist options
  • Save OriginUnknown/8086ec6895b38ad15818 to your computer and use it in GitHub Desktop.
Save OriginUnknown/8086ec6895b38ad15818 to your computer and use it in GitHub Desktop.
Letter duplication - find out which words have the most number of duplicated letters
var compareNumOfDupes = function(){
var args = Array.prototype.slice.call(arguments), dupeObj = {}, result, msg = "";
dupeObj.results = [];
var indx = 0, argLen = args.length;
for(; indx < argLen; indx++){
searchForDupes(args[indx], dupeObj);
}
result = getWordWithMostDupes(dupeObj);
msg = "The word with the most number of duplicate letters is "+result.word+
" with a total of "+result.totalDupes+" duplicate letters.";
return msg;
//for every word
function searchForDupes(word, dObj){
var dupeCollectionObj = {}, obj = {}, wrdArr = word.split("");
obj.word = word;
dObj.results.push(obj);
//check to see if each letter in current word is a duplicate
var x = 0; len = wrdArr.length;
for(; x < len; x++){
isDupe(wrdArr[x], dupeCollectionObj);
}
obj.totalDupes = calculateTotalDupes(dupeCollectionObj);
}
//for every letter
function isDupe(letter, obj){
if(obj.hasOwnProperty(letter)){
obj[letter] += 1;
} else {
obj[letter] = 1;
}
}
//tally up dupes
function calculateTotalDupes(obj){
var totalDupes = 0;
for(var prop in obj){
if(obj[prop] > 1){
totalDupes += obj[prop];
}
}
return totalDupes;
}
//compare words to get the most dupes
function getWordWithMostDupes(obj){
var dupeCounter = 0, len = obj.results.length, i = 0, objWithTheMostDupes;
for(; i < len; i++){
if(obj.results[i].totalDupes > dupeCounter){
dupeCounter = obj.results[i].totalDupes;
objWithTheMostDupes = obj.results[i];
}
}
return objWithTheMostDupes;
}
};
console.log(compareNumOfDupes("applebees", "supaadupa", "busybees"));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment