# Time: O(n) # Space: O(1) # # Given two strings s and t, write a function to # determine if t is an anagram of s. # # For example, # s = "anagram", t = "nagaram", return true. # s = "rat", t = "car", return false. # # Note: # You may assume the string contains only lowercase alphabets. # import collections import string class Solution: # @param {string} s # @param {string} t # @return {boolean} def isAnagram(self, s, t): if len(s) != len(t): return False count = {} for c in s: if c.lower() in count: count[c.lower()] += 1 else: count[c.lower()] = 1 for c in t: if c.lower() in count: count[c.lower()] -= 1 else: count[c.lower()] = -1 if count[c.lower()] < 0: return False return True def isAnagram2(self, s, t): return all([s.count(c)==t.count(c) for c in string.ascii_lowercase]) def isAnagram3(self, s, t): if len(s) != len(t): return False count = collections.defaultdict(int) for c in s: count[c] += 1 for c in t: count[c] -= 1 if count[c] < 0: return False return True # Time: O(nlogn) # Space: O(n) class Solution2: # @param {string} s # @param {string} t # @return {boolean} def isAnagram(self, s, t): return sorted(s) == sorted(t)