回文排列
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
回文串不一定是字典当中的单词。
示例1:
输入:"tactcoa"
输出:true(排列有"tacocat"、"atcocta",等等)
题解
一个回文串的排列不可能包含超过一个“出现奇数次的字符”,用哈希表记录字符的个数。再判断即可。
代码展示
// 使用散列表记录字符的个数
public boolean canPermutePalindrome(String s) {
int[] charNum = new int[128];
char[] chars = s.toCharArray();
int count = 0;
for (char ch : chars) {
charNum[ch]++;
}
for (int i = 0; i <charNum.length ; i++) {
if ((charNum[i]&1)==1)
count++;
}
return count<=1;
}