我的问题是: 你如何检查一个给定的字符串是否是回文的字谜?
我在互联网上找到了Python的一些解决方案,但我不知道如何才能检查这一点。我正在考虑将strig转换为char []
,然后为每个角色获取HashCode,但我被卡住了。
答案 0 :(得分:5)
如果您对回文或字谜不感兴趣,那么我认为您可以重新设置问题,因为检查给定的字符串是否只有一个字符出现的次数不均匀。这是基于只有中间字符可能出现奇数次。只要满足,那么你可以从字符串中形成一个回文。
要做到这一点,你可以使用Linq。也许是这样的事情:
private static bool IsPalindromeAnagram(string test)
{
var charCount = test.GroupBy(c => c, (c, i) => new
{
character = c,
count = i.Count()
});
return charCount.Count(c => c.count % 2 == 1) <= 1;
}
答案 1 :(得分:0)
将字典中的字符保存为键,然后检查是否有多个键是奇数。这种方式也有所有独特的char准备制作字谜。
var length = s.Length;
if (length == 0) return false;
var dic = new Dictionary<char, int>();
for (var i = 0; i < length; i++)
{
if (dic.ContainsKey(s[i]))
{
dic[s[i]]++;
continue;
}
dic.Add(s[i], 1);
}
int odd = 0;
foreach (var pv in dic)
{
if (odd > 1) return false;
if (pv.Value % 2 == 0)
{
continue;
}
odd++;
}