# 0409. Longest Palindrome

<https://leetcode.com/problems/longest-palindrome>

## Description

Given a string `s` which consists of lowercase or uppercase letters, return *the length of the **longest palindrome*** that can be built with those letters.

Letters are **case sensitive**, for example, `"Aa"` is not considered a palindrome here.

**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
```

**Example 3:**

```
**Input:** s = "bb"
**Output:** 2
```

**Constraints:**

* `1 <= s.length <= 2000`
* `s` consists of lowercase **and/or** uppercase English letters only.

## ac

```java
class Solution {
    public int longestPalindrome(String s) {
        Map<Character, Integer> map = new HashMap<>();
        for  (char c : s.toCharArray()) {
            map.put(c, map.getOrDefault(c, 0) + 1);
        }

        int sum = 0;
        boolean hasOdd = false;
        for (int v : map.values()) {
            if (v % 2 == 0) sum += v;
            else {
                sum += v - 1;
                hasOdd = true;
            }
        }

        return hasOdd ? sum + 1 : sum;
    }
}

/*
1) count letters, map or array; 2) sum all even value, sum all (odd value - 1); 3) if has odd value, +1
*/
```
