1、题目描述
有效的字母异位词。
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。其中字母异位词表示:重新排列字母顺序能变成另外一个词,且每个字符只用一次。
2、思路1
将两个字符串分别排序后比较是否相等即可。
代码
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if len(s) != len(t):
return False
# 将字符串s和t进行排序
s_list = list(s)
s_list.sort()
s = ''.join(s_list)
t_list = list(t)
t_list.sort()
t = ''.join(t_list)
# check是否相等
return True if s == t else False
3、思路2
由于s和t长度一样,因此,可以首先用哈希表来统计字符出现次数;然后遍历t,每出现一个字符就-1,若<0,则返回False。
代码
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if len(s) != len(t):
return False
# 构造哈希表
from collections import defaultdict
s_dic = defaultdict(int)
for char in s:
s_dic[char] += 1
# check
for char in t:
if char in s_dic:
s_dic[char] -=1
if s_dic[char] < 0:
return False
# 若当前字符不在字典,则直接返回False
else:
return False
return True