【LeetCode 简单题】66-有效的字母异位词

声明:

今天是第66道题。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除

(手动比心ღ( ´・ᴗ・` ))

正文

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

示例 1:

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

示例 2:

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

说明:
你可以假设字符串只包含小写字母。

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

解法1。先把字符串强制转换为list,再用内置排序函数sorted对list排序,然后直接比较2个list是否相等,代码如下。

执行用时: 64 ms, 在Valid Anagram的Python提交中击败了54.03% 的用户

class Solution(object):
    def isAnagram(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        s_sorted = sorted(list(s))
        t_sorted = sorted(list(t))
        return s_sorted == t_sorted

 解法2。利用python灵活的语法,set、str、list之间可允许的强制转换

执行用时: 36 ms, 在Valid Anagram的Python提交中击败了86.30% 的用户

class Solution(object):
    def isAnagram(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        return set(s) == set(t) and all(s.count(i)==t.count(i) for i in set(s))

 解法2。和上一种解法异曲同工,更好理解一些,就是以t为比较基准,遍历t中的每一个字符出现次数和s中的是否相等

class Solution(object):
    def isAnagram(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        if len(s) != len(t):
            return False
        t_set = set(t)
        for i in t_set:
            if s.count(i) != t.count(i):
                return False
        return True

结尾

解法1&解法2:https://blog.csdn.net/qq_34364995/article/details/80657927

解法3:LeetCode

猜你喜欢

转载自blog.csdn.net/weixin_41011942/article/details/83684532
今日推荐