当前位置: 代码网 > it编程>编程语言>其他编程 > 力扣代码学习日记三

力扣代码学习日记三

2024年08月06日 其他编程 我要评论
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

思路

示例 1:

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

示例 2:

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

提示:

1 <= s.length, t.length <= 5 * 104
s 和 t 仅包含小写字母

解题方法

复杂度

时间复杂度:

空间复杂度:

代码

解法一:

class solution(object):
    def isanagram(self, s, t):
        if len(s) != len(t):
            return false
        count_s = {}
        for char in s:
            count_s[char] = count_s.get(char,0) + 1

        count_t = {}
        for char in t:
            count_t[char] = count_t.get(char,0) + 1
        return count_s == count_t

解法二:

class solution(object):
    def isanagram(self, s, t):
        if len(s) != len(t):
            return false
        
        count = {}
        for char in s:
            count[char] = count.get(char,0) + 1
        
        for char in t:
            if char not in count:
                return false
            count[char] -= 1
            if count[char] < 0:
                return false
        return true

时间复杂度为 o(n),其中n是字符串s和t的长度的较大值。
空间复杂度为 o(1)。

解法三:
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

  • 可以使用 python 中的 collections.counter 类来统计每个字符的出现次数,这样可以更好地处理 unicode 字符。counter 类可以接受任何可迭代对象作为输入,包括 unicode 字符串。
from collections import counter
class solution(object):
    def isanagram(self, s, t):
        if len(s) != len(t):
            return false
        
        counter_s = counter(s)
        counter_t = counter(t)
        return counter_s == counter_t
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com