题目描述:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
思路:
有两种思路:
1、分别记录 s 和 t 中字母出现的次数,记录成两个dict,然后比较这两个字典的key 和 value值
2、记录s中字母出现的次数,记录成一个dict,遍历 t 中的字母,如果没有出现在dict中,返回false,否则对应的值-1,最后判断dict中是否所有的value ==0
代码:
思路一:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
l1 = len(s)
l2 = len(t)
if l1 != l2:
return False
datadict1 = {}
datadict2 = {}
for i in s:
datadict1[i] = datadict1.get(i,0) + 1
for i in t:
datadict2[i] = datadict2.get(i,0) + 1
for key in datadict1:
if key not in datadict2 or datadict1[key] != datadict2[key]:
return False
return True
思路二:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
l1 = len(str(s))
l2 = len(str(t))
new_dict = {}
if l1 != l2:
return False
for i in s:
if i in new_dict:
new_dict[i] += 1
else:
new_dict[i] = 1
for i in t:
if i in new_dict:
new_dict[i] -= 1
else:
return False
for value in new_dict.values():
if value != 0:
return False
return True
注意事项:
没啥注意事项,就是思路2比较巧妙,时间复杂度和空间复杂度比较好。