【leetcode】409题解

Longest Palindrome

  • 题目描述:

给定一个包含小写字母和大写字母的字符串,统计字符串中的字符所能组成的回文子串的最长的长度。

  • 样例:
1
2
3
4
5
Input:
"abccccdd"

Output:
7
  • 题解:

回文即代表正反遍历是相同的,所以我们可以使用一个HashMap或者HashSet来进行存储每个字符出现数量。

  • code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public int (String s) {
Map<Character, Integer> map = new HashMap<>();
int len = s.length();
for (int i = 0; i < len; i++) {
char a = s.charAt(i);
map.put(a, map.getOrDefault(a, 0) + 1);
}
int sum = 0;
boolean flag = false;
for (char a : map.keySet()) {
if ((map.get(a) & 1) == 1) {
sum += map.get(a) - 1;
flag = true;
} else {
sum += map.get(a);
}
}
if (flag) {
sum++;
}
return sum;
}