242.有效的字母异位词
力扣题目链接(opens new window)
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true
示例 2: 输入: s = “rat”, t = “car” 输出: false
说明: 你可以假设字符串只包含小写字母。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s 和 t 仅包含小写字母
代码
def find(s,t):
record=[0]*26#26个字母
for i in s:
record[ord(i)-ord("a")]+=1
for i in t:
record[ord(i)-ord("a")]-=1
for i in range(26):
if record[i]!=0:
print(False)
return
print(True)
return
def find1(s,t):
from collections import defaultdict
s_dict=defaultdict(int)
#普通的字典会抛出一个KeyError错误。但是defaultdict会自动为这个不存在的键生成一个默认值
t_dict=defaultdict(int)
for x in s:
#遍历字符串 s 中的每个字符 x,并在字典 s_dict 中对应的键值上增加 1
s_dict[x]+=1
for x in t:
t_dict[x]+=1
print(s_dict==t_dict)
return
def find2(s,t):
from collections import Counter
#Counter(s) 会计算字符串 s 中每个字符的出现次数,并返回一个 Counter 对象。例如,如果 s 是 'hello',那么 Counter(s) 将返回 Counter({'h': 1, 'e': 1, 'l': 2, 'o': 1})
a_count=Counter(s)
b_count=Counter(t)
print(a_count==b_count)
return
if __name__=='__main__':
s=input("s=").split()
t=input("t=").split()
find(s,t)
find1(s,t)
find2(s,t)
结果
小结
第一种手动设置一个字典,记录每个字符是否有出现,出现的次数
第二种使用defaultdict自动创建键值记录其出现的次数
第三种使用Counter(s) 计算字符串 s 中每个字符的出现次数