在C#中实现anagram函数

Pin*_*ong 5 c#

可能重复:
什么是一种简单的方法来判断一个单词列表是否是彼此的字谜?

在C#中编写函数的最佳方法(性能范围广)是什么,它接受两个字符串,当字符串是彼此的字符串时返回true,否则返回false.字谜的例子是:

abet beat beta bate
abides biased
Run Code Online (Sandbox Code Playgroud)

字谜链接

在实现这一点时,每个字符串中是否有空格?

任何想法都将非常感谢!

por*_*ges 8

一个简单(天真?)的方式,使用LINQ:

"abides".OrderBy(c=>c).SequenceEqual("biased".OrderBy(c=>c))
Run Code Online (Sandbox Code Playgroud)


Dan*_*ann 6

一个简单的解决方案是按字母顺序对字符进行排序并将它们相互比较.

public static class AnagramExtensions
{
    public static bool IsAnagramOf(this string word1, string word2)
    {
        return word1.OrderBy(x => x).SequenceEqual(word2.OrderBy(x => x));
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,使用它:

    static void Main()
    {
        string word1 = "cat";
        string word2 = "tac";

        Console.WriteLine(word1.IsAnagramOf(word2));

        string word3 = "cat";
        string word4 = "dog";

        Console.WriteLine(word3.IsAnagramOf(word4));
    }   
Run Code Online (Sandbox Code Playgroud)

在这种情况下的输出将是

True

False