题目:
Given two strings s and t, return true if t is an anagram of s, and false otherwise.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
给定两个字串,判断一个字串是否由另一个字串重组而成
这题最简单可以这样解
class Solution: def isAnagram(self, s: str, t: str) -> bool: return sorted(s)==sorted(t)
透过sorted让字串用字元编码排序
若t真的是由s重组而成,两者排序后应该会一模一样
最后执行时间50ms(faster than 91.32%)
当然一般还是建立hash map去解
class Solution: def isAnagram(self, s: str, t: str) -> bool: if len(s)!=len(t): return False d1={} d2={} for i in range(len(s)): if s[i] in d1: d1[s[i]]=d1[s[i]]+1 else: d1[s[i]]=1 if t[i] in d2: d2[t[i]]=d2[t[i]]+1 else: d2[t[i]]=1 for i in d1: if i not in d2: return False else: if d1[i]!=d2[i]: return False return True
为两字串个别建立一个dictionary,纪录各字元出现的次数
最后再比较两dictionary所记录的值是否相等
且确认一字串是否有另一字串没有的字元
最后执行时间48ms(faster than 93.25%)
那我们下题见