欢乐力扣:有效的字母异位词


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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值