leetcode266 Palindrome Permutation-zh
# 266. 回文排列 (opens new window)
English Version (opens new window)
# 题目描述
给定一个字符串,判断该字符串中是否可以通过重新排列组合,形成一个回文字符串。
示例 1:
输入: "code"
输出: false
示例 2:
输入: "aab"
输出: true
示例 3:
输入: "carerac"
输出: true
# 解法
利用 HashMap(字典表)统计每个字符出现的频率,至多有一个字符出现奇数次数即可。
# Python3
class Solution:
def canPermutePalindrome(self, s: str) -> bool:
mapper = {}
for ch in s:
mapper[ch] = mapper.get(ch, 0) + 1
cnt = 0
for _, v in mapper.items():
if v % 2 != 0:
cnt += 1
return cnt <= 1
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# Java
class Solution {
public boolean canPermutePalindrome(String s) {
Map<Character, Integer> map = new HashMap<>();
for (int i = 0, n = s.length(); i < n; ++i) {
char ch = s.charAt(i);
map.put(ch, map.getOrDefault(ch, 0) + 1);
}
int cnt = 0;
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if (entry.getValue() % 2 != 0) {
++cnt;
}
}
return cnt <= 1;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# ...
1
编辑 (opens new window)
上次更新: 2021/10/30, 12:58:38