异位词可以这样理解,词所含的东西是一样的,只是可能排布的位置不一样。所以,最简单的方法就是思路一,对t,s排序,然后比对每一个字符,如果相等就是异位词。
使用算法的话就是思路二,字典哈希表
思路一:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if len(s) != len(t):
return False
return sorted(s) == sorted(t)
#积累,sorted(a)不会改变a本身;a.sort()会改变a本身;
#而且sorted可以用于数组和字符串,a.sort()只能用于数组
思路二:字典哈希表
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if len(s) != len(t):
return False
dicts = collections.defaultdict(int)
for i in range(len(s)):
dicts[s[i]] = dicts[s[i]] + 1
dicts[t[i]] = dicts[t[i]] - 1
for val in dicts.values():
if val != 0:
return False
return True
collections.defaultdict(int) 选择int类型,能对字典里没有的value默认为0,此时的dict[key]相当于一个计数器,记录key的个数。
等价于 d[s[i]] = d.get(s[i],0) + 1 能get到就用d[s[i]],get不到就用默认初始值0。collections.defaultdict(int)重点学习对象