finding if two words are anagrams of each other

后端 未结 22 1237
隐瞒了意图╮
隐瞒了意图╮ 2020-11-27 14:51

I am looking for a method to find if two strings are anagrams of one another.

Ex: string1 - abcde
string2 - abced
Ans = true
Ex: string1 - abcde
string2 - ab         


        
22条回答
  •  温柔的废话
    2020-11-27 15:21

    C#

    public static bool AreAnagrams(string s1, string s2)
    {
      if (s1 == null) throw new ArgumentNullException("s1");
      if (s2 == null) throw new ArgumentNullException("s2");
    
      var chars = new Dictionary();
      foreach (char c in s1)
      {
          if (!chars.ContainsKey(c))
              chars[c] = 0;
          chars[c]++;
      }
      foreach (char c in s2)
      {
          if (!chars.ContainsKey(c))
              return false;
          chars[c]--;
      }
    
      return chars.Values.All(i => i == 0);
    }
    

    Some tests:

    [TestMethod]
    public void TestAnagrams()
    {
      Assert.IsTrue(StringUtil.AreAnagrams("anagramm", "nagaramm"));
      Assert.IsTrue(StringUtil.AreAnagrams("anzagramm", "nagarzamm"));
      Assert.IsTrue(StringUtil.AreAnagrams("anz121agramm", "nag12arz1amm"));
      Assert.IsFalse(StringUtil.AreAnagrams("anagram", "nagaramm"));
      Assert.IsFalse(StringUtil.AreAnagrams("nzagramm", "nagarzamm"));
      Assert.IsFalse(StringUtil.AreAnagrams("anzagramm", "nag12arz1amm"));
    }
    

提交回复
热议问题