LeetCode python-242. 有效的字母异位词

LeetCode python-242. 有效的字母异位词

先看题目:
(题目来力扣网站)
在这里插入图片描述

思路1

将序列排序,然后对比序列是否相等。
以下两行代码思路相同,但是第二个的运行速度优于第一个的速度。

class Solution:
    def isAnagram(self,s,t):
        if len(s) != len(t):
            return False
        sorted(s)
        sorted(t)
        if sorted(s) == sorted(t):
            return True
p = Solution()
s = "anagram"
t = "nagaram"
res = p.isAnagram(s,t)
print(res)

在这里插入图片描述

class Solution:
    def isAnagram(self, s, t) :
        if len(s) != len(t):
            return False
        return sorted(s) == sorted(t)
p = Solution()
s = "anagram"
t = "nagaram"
res = p.isAnagram(s,t)
print(res)

在这里插入图片描述

思路2

利用 Python 的 collections 模块中的 Counter 类,可以统计每个字母出现次数。
通过比较字符串中每个字母个数,来判断bool类型。

from collections import Counter #利用 Python 的 collections 模块中的 Counter 类,可以统计每个字母出现次数
class Solution:
    def isAnagram(self, s, t):
        return Counter(s) == Counter(t)
p = Solution()
s = "anagram"
t = "nagaram"
res = p.isAnagram(s,t)
print(res)

在这里插入图片描述

class Solution:
    def isAnagram(self,s, t):
        if len(s) != len(t):
            return False
        list1 = {}
        for i in s:
            if i not in list1:
                list1[i] = 1
            else:
                list1[i] = list1[i] +1
        for j in t:
            if j not in s:
                return False
            else:
                list1[i] = list1[i] - 1
                if list1[i] == 0:
                    return True

p = Solution()
res = p.isAnagram("", "")
print(res)

此方法出现错误。这里讲一下具体思路:
① 创建空字典。key:字母;value:字母对应的次数。这里不可以创建空列表,列表的索引是整型或者是切片,不能是字符串。
②遍历字母i并存入list1。字母i在字符串s中,如果i不在s中,则list1中存入list[i]及其对应的次数。如果i在,则次数+1。
③遍历t中的字母j,如果j不在s中,则返回False,如果在s中,则对应字母的次数-1。
④如果list[i] == 0,则证明s=t,返回True。
在这里插入图片描述

思路3

①构建两个空字典。分别存入相应的字母及其索引。
②对比是否 list1 = list2,返回相应的bool类型。

class Solution:
    def isAnagram(self,s, t):
        if len(s) != len(t):
            return False
        list1 = {}
        list2 = {}
        for i in s:
            if i not in list1:
                list1[i] = 1
            else:
                list1[i] = list1[i] +1
        for i in t:
            if i not in list2:
                list2[i] = 1
            else:
                list2[i] = list2[i] + 1
        if list1 == list2:
            return True

p = Solution()
res = p.isAnagram("anagram", "nagaram")
print(res)

在这里插入图片描述

收获

①利用 Python 的 collections 模块中的 Counter 类,可以统计每个字母出现次数。
from collections import Counter
②可将函数用具体算法实现。
③list1={}和list1=[]区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值