检查字符串是否是回文的字谜

时间:2015-03-26 17:34:37

标签: c# palindrome anagram

我的问题是: 你如何检查一个给定的字符串是否是回文的字谜?

我在互联网上找到了Python的一些解决方案,但我不知道如何才能检查这一点。我正在考虑将strig转换为char [],然后为每个角色获取HashCode,但我被卡住了。

2 个答案:

答案 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++;
        }