题目链接
题目描述
给定一个字符串,判断该字符串中是否可以通过重新排列组合,形成一个回文字符串。
示例 1:
输入: "code"
输出: false
示例 2:
输入: "aab"
输出: true
示例 3:
输入: "carerac"
输出: true
解题思路
统计法
设置一个数组,统计每个字符出现的次数,然后遍历每个字符出现次数
如果原字符串长度为偶数,那么只要出现的字符其出现次数必须为偶数
如果原字符串长度为奇数,那么必有一个字符出现奇数次,其他字符出现偶数次
AC代码
class Solution {
public boolean canPermutePalindrome(String s) {
int[] count = new int[26];
for (char c : s.toCharArray()) {
count[c - 'a']++;
}
if (s.length() % 2 == 0) {
for (int a : count) {
if (a % 2 != 0) {
return false;
}
}
} else {
int odd = 0;
for (int a : count) {
if (a % 2 != 0) {
odd++;
}
}
return odd == 1;
}
return true;
}
}