anagram かどうかを調べるには s, t の出現する文字のカウントが同じなら anagram と言える。

回答方法は

  1. 文字数をカウントし、s と t を比較する
  2. 文字数をカウントし、s と t を比較する(Counter を使う)
  3. sorted を使う

Input: s = “anagram”, t = “nagaram”

  1. 文字数をカウントし、s と t を比較する
class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        if len(s)!= len(t):
            return False

        count_s, count_t = {}, {}

        for i in range(len(s)):
            count_s[s[i]] = 1 + count_s.get(s[i], 0)
            count_t[t[i]] = 1 + count_t.get(t[i], 0)

        for c in count_s:
            if count_s[c] != count_t.get(c, 0):
                return False
        return True
  1. 文字数をカウントし、s と t を比較する(Counter を使う)

Counter を使うことにより、 {‘a’: 3, ‘n’: 1, ‘g’: 1, ‘r’: 1, ‘m’: 1} 出現文字とその回数を取得できる。

そのため anagram であれば true が返る。

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        return Counter(s) == Counter(t)
  1. sorted を使う

sorted を使うことにより、 s, t が [‘a’, ‘a’, ‘a’, ‘g’, ‘m’, ‘n’, ‘r’] と sort される。

そのため anagram であれば true が返る。

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        return sorted(s) == sorted(t)