Skip to content

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;
};

Released under the MIT license