21-代码随想录242有效的字母异位词

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 中每个字符的出现次数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淅淅同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值