409. Longest Palindrome
Description
Given a string s
which consists of lowercase or uppercase letters, return the length of the longest that can be built with those letters.
Letters are case sensitive, for example, "Aa"
is not considered a palindrome.
Example 1:
Input: s = "abccccdd" Output: 7 Explanation: One longest palindrome that can be built is "dccaccd", whose length is 7.
Example 2:
Input: s = "a" Output: 1 Explanation: The longest palindrome that can be built is "a", whose length is 1.
Constraints:
1 <= s.length <= 2000
s
consists of lowercase and/or uppercase English letters only.
Solutions
Solution: Hash Map
- Time complexity: O(n)
- Space complexity: O(n)
JavaScript
js
/**
* @param {string} s
* @return {number}
*/
const longestPalindrome = function (s) {
const builtMap = new Map();
let result = 0;
for (const char of s) {
const count = builtMap.get(char) ?? 0;
builtMap.set(char, count + 1);
}
for (let count of builtMap.values()) {
const isOdd = count % 2;
if (isOdd) count -= 1;
result += count;
}
return result < s.length ? result + 1 : result;
};