法一:循环删除法
性能极差
执行用时: 2040 ms , 在所有 Python3 提交中击败了 5.18% 的用户
内存消耗: 16 MB , 在所有 Python3 提交中击败了 5.01% 的用户
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
s=list(s)
t=list(t)
for i in s:
flag=False
for j in range(len(t)):
if i==t[j]:
del t[j]
flag=True
break
if flag==False:
return False
if not t:
return True
else:
return False
法二:set统计次数
性能依然很差
执行用时: 96 ms , 在所有 Python3 提交中击败了 5.86% 的用户
内存消耗:15.5 MB , 在所有 Python3 提交中击败了25.15% 的用户
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
s=list(s)
t=list(t)
setss=set(s)
settt=set(t)
cyc=setss if setss>settt else settt
for i in cyc:
if s.count(i)!=t.count(i):
return False
return True
法三:字典Counter()
性能一般
执行用时: 52 ms , 在所有 Python3 提交中击败了 83.74% 的用户
内存消耗:15.4 MB , 在所有 Python3 提交中击败了 31.53% 的用户
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
s=Counter(list(s))
t=Counter(list(t))
if s!=t:
return False
return True
执行用时: 64 ms , 在所有 Python3 提交中击败了46.07% 的用户
内存消耗:15.3 MB , 在所有 Python3 提交中击败了33.75% 的用户
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
d=Counter(list(s))
for i in range(len(t)):
d[t[i]]=d.get(t[i],0)-1
for i in d:
if d[i]!=0:
return False
return True
法五:排序
执行用时: 56 ms , 在所有 Python3 提交中击败了 74.09% 的用户
内存消耗: 15.4 MB , 在所有 Python3 提交中击败了 32.76% 的用户
s=list(s)
t=list(t)
s.sort()
t.sort()