给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
回文串不一定是字典当中的单词。
class Solution {
public boolean canPermutePalindrome(String s) {
//可以排成回文:字符都是双数或者只有一个字符是单数的
//char字符一共有128个
int[] arr = new int[128];
//统计字符串出现的字符数
//下标为字符,内容为字符的个数
for (char c : s.toCharArray()) {
arr[c]++;
}
//如果有奇数flag变为true,如果flag为true后又遇到奇数,说明不能组成回文,返回false
boolean flag = false;
for (int i : arr) {
//是奇数
if (i % 2 == 1) {
if (!flag) {
flag = true;
} else {
return false;
}
}
}
return true;
}
}