题目
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
方法1:暴力字典
- 若两个字符串的长度不等,那么他们一定不是互为字母异位词
- 若两个字符串的长度相等,那么使用字典分别记录两个字符串中每个字母的出现次数,最后进行比较
class Solution(object):
def isAnagram(self, s, t):
if len(s) != len(t):
return False
else:
num = len(s)
i = 0
dict_s = {}
dict_t = {}
while i < num:
if dict_s.get(s[i]) is None:
dict_s[s[i]] = dict_s.get(s[i], 0) + 1
else:
dict_s[s[i]] = dict_s[s[i]] + 1
if dict_t.get(t[i]) is None:
dict_t[t[i]] = dict_t.get(t[i], 0) + 1
else:
dict_t[t[i]] = dict_t[t[i]] + 1
i = i + 1
if cmp(dict_s, dict_t) == 0:
return True
else:
return False
方法2:计数器
class Solution(object):
def isAnagram(self, s, t):
return Counter(s) == Counter(t)
相关知识
-
cmp(dict1, dict2):
比较两个字典的元素。若两个字典的元素相同,那么返回0;若 dict1 大于 dict2,那么返回 1;若 dict1 小于 dict2,那么返回 -1。 -
Counter():
记录每个字母出现的次数