回文排列
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
回文串不一定是字典当中的单词。
示例1:
输入:“tactcoa”
输出:true(排列有"tacocat"、“atcocta”,等等)
java
class Solution {
public boolean canPermutePalindrome(String s) {
char[] arr = s.toCharArray();
//定义双列集合,存储字符串中字符以及字符出现的次数
HashMap<Character, Integer> hm = new HashMap<>();
//遍历字符数组获取每一个字符,并将字符存储在双列集合中
for(char c: arr) {
//存储过程中要做判断,如果集合中不包含这个键,就将该字符当作键,值为1存储,如果集合中包含这个键,就将值加1存储
if(!hm.containsKey(c)) { //如果不包含这个键
hm.put(c, 1);
}
else{
hm.put(c, hm.get(c) + 1);
}
}
int cot = 0;
//打印双列集合获取字符出现的次数
for (Character key : hm.keySet()) { //hm.keySet()代表所有键的集合
if(hm.get(key)%2!=0){
cot = cot +1;
}
}
if(cot>1){
return false;
}
else{
return true;
}
}
}
python
class Solution(object):
def canPermutePalindrome(self, s):
dicta = {}
for i in s:
dicta[i]=s.count(i)
cot = 0
for value in dicta.values():
if value%2!=0:
cot=cot+1
if cot>1:
return False
else:
return True
基本思路就是判断字符串中每个字符出现的次数如果都是偶数,就返回true,如果有一个不是偶数也是true,超过一个就是false。