-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path18.longest-palindrome.js
53 lines (42 loc) · 1.27 KB
/
18.longest-palindrome.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// https://leetcode.com/problems/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
// 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.
/**
* @param {string} s
* @return {number}
*/
var longestPalindrome = function(s) {
let hashMap = {};
for (let i = 0; i < s.length; i++){
if(!hashMap[s[i]]) {
hashMap[s[i]] = 1;
} else {
hashMap[s[i]]++;
}
}
let ans = 0;
let middle = false;
for (const key in hashMap) {
if (hashMap[key] % 2 === 0) {
ans += hashMap[key];
} else {
if (!middle) {
ans += 1;
middle = true;
}
ans += hashMap[key] - 1;
}
}
return ans
};