检查字符串是否是回文的变位词

Check if string is anagram of palindrome

我的问题是: 你如何检查给定的字符串是否是回文的变位词?

我在互联网上的 Python 中找到了一些解决方案,但我不确定如何检查它。我正在考虑将 strig 转换为 char [],然后获取每个字符的 HashCode,但我被卡住了。

如果您对回文或变位词是一个真实的词不感兴趣,那么我认为您可以将问题重新定义为 检查给定字符串是否不超过一个出现奇数的字符次。这是基于只有中间字符可能出现奇数次。只要满足就可以将字符串组成回文

为此,您可以使用 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;
}

在字典中保存字符作为键,然后检查是否有多个键为奇数。这种方式也有所有独特的字符准备好制作字谜。

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