LeetCode 回文排列
题目描述:
给定一字符串,编写函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
示例:
-
输入:abcdcba
-
输出:bacdcab、acbdbca、cbadabc等
思路:
由回文数的定义可知,若字符串为回文数,则有以下定义:
- 1:字符个数全为偶数
- 2:字符个数中最多只有一个为奇数
- 例1:字符串"abcdcba",其中a:2 b:2 c:2 d:1
- 例2:字符"abcddcba", 其中a:2 b:2 c:2 d:2
代码:
class Solution {
public boolean canPermutePalindrome(String s) {
// ASCII A:65 Z:90 a:97 z:122
int[] str= new int[123];
for (int ch: s.toCharArray()) {
str[ch]++;
}
int temp = 0;
for (int i: str) {
if (i%2==1){
temp++;
}
}
if (temp>1){
return false;
}
return true;
}
}