题目

给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。

回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。

回文串不一定是字典当中的单词。


题解

思路:字符串中的字符出现都是偶数次或者只有一个字符出现奇数次

public class Solution {
public bool CanPermutePalindrome(string s) {
//char[] schar = s.ToCharArray();
var schar = s.ToList().GroupBy(i=>i);//Attention Plz!!!
int sum = 0;
foreach (var item in schar)
{
if (item.Count()==1 || item.Count()%2==1)
{
sum++;
}
}
return sum<=1;
}
}


知识点

Count()

开局尝试了用字符数组:char[] schar = s.ToCharArray()

但是字符数组不能使用Count方法

通过的方法中,先将字符串转换成List,然后将其排序之后可以使用Count()方法。


提交结果

【程序员面试金典】04 回文排列_字符数组