[Leetcode刷题心得][数组、字符串]242. 有效的字⺟母异位词

题目:

给定两个字符串串 s 和 t,编写⼀一个函数来判断 t 是否是 s 的字⺟母 异位词。

说明:

你可以假设字符串串只包含⼩小写字⺟母。

示例:

示例 1

输入:  s = "anagram", t = "nagaram" 
输出: true

示例 2

输入: s = "rat", t = "car"
输出: false

解题思路:

可以将26个英文字母都看成数组,如下表

abcdefghijklmnopqrstuvwxyz

s = anagram
t= nagaram
首先计算s中每个字母的个数得到下表

31111
abcdefghijklmnopqrstuvwxyz

然后将t中的字母每遍历一个做减一操作,看最后结果是否为0

代码

用set()方法,过滤s字符串中重复的字母,生成彼此不重复的集合L。访问L集合,判断每个字母在s和t字符串中的数量是否相等,进行对应的操作

def heterosyllabicWords(string1,string2):
    if len(string1) != len(string2):
        return False
    for i in set(string1):
        if string1.count(i) != string2.count(i):
            return False
    return True
def heterosyllabicWords2(string1,string2):
    return len(string1) == len(string2) and all([string1.count(i) == string2.count(i) for i in set(string1)])

if __name__ == '__main__':
    heterosyllabicWords("anagram","nagaram")
    heterosyllabicWords2("anagram","nagaram")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值