Created
October 12, 2017 22:28
-
-
Save Jwing28/51fe77584118b3a9f0b685fd78417d82 to your computer and use it in GitHub Desktop.
Longest Palindrome
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
//create freq obj for each letter, iterate over | |
//if even, increment a counter of its value | |
//if odd > 1, increment counter value - 1 | |
//if odd = 1, dont count it. | |
//at end you can add 1 to account for letters that have freq of one. (create variable for this) | |
//can only happen once (assuming letter w/ freq of 1 exists.) | |
//ex's. '' - 0, abc - 1, abbc - 3, aaabb - 5, zzz - 3, aaabbcde- 5 | |
var longestPalindrome = function(s) { | |
var freq = {}, longest = 0, hasOdd = false; | |
s = s.split(""); | |
s.forEach(function(letter){ | |
freq[letter] = freq[letter] + 1 || 1; | |
}); | |
for (var key in freq) { | |
if(freq[key] % 2 === 0) { | |
longest += freq[key]; | |
} else { | |
hasOdd = true; | |
longest += freq[key] - 1; | |
} | |
} | |
return hasOdd ? longest + 1 : longest; //if no letters of freq 1, aabbbaa works. if has it, then adds it back once. | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment