anagram かどうかを調べるには s, t の出現する文字のカウントが同じなら anagram と言える。
回答方法は
- 文字数をカウントし、s と t を比較する
- 文字数をカウントし、s と t を比較する(Counter を使う)
- sorted を使う
Input: s = “anagram”, t = “nagaram”
- 文字数をカウントし、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
- 文字数をカウントし、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)
- 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)