409. Longest Palindrome

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.

409. Longest Palindrome
``````struct Solution;

use std::collections::HashSet;

impl Solution {
fn longest_palindrome(s: String) -> i32 {
let mut hs: HashSet<char> = HashSet::new();
let mut half = 0;
for c in s.chars() {
if hs.contains(&c) {
hs.remove(&c);
half += 1;
} else {
hs.insert(c);
}
}
if hs.is_empty() {
2 * half
} else {
2 * half + 1
}
}
}

#[test]
fn test() {
let s = "abccccdd".to_string();
assert_eq!(Solution::longest_palindrome(s), 7);
}
``````