242. 有效的字母异位词

题目描述

 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
 说明:
  你可以假设字符串只包含小写字母。
原题请参考链接https://leetcode-cn.com/problems/valid-anagram/

题解

方法一 【排序】

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        # 字符串s按英文字母从小到大排序
        s = "".join((lambda x: (x.sort(), x)[1])(list(s)))
        # 字符串t按英文字母从小到大排序
        t = "".join((lambda x: (x.sort(), x)[1])(list(t)))
        if s == t:
            return True
        return False

方法二 【哈希表(数组哈希)】

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        if len(s) != len(t):
            return False
        l = [0] * 26  # 数组作为哈希表,每个位置存放26个字母出现的次数
        for i in s:
            l[ord(i)-ord('a')] += 1
        for i in t:
            l[ord(i)-ord('a')] -= 1 
            # 小于0代表第二个字符串的某个字母出现次数比第一个字符串多
            if l[ord(i)-ord('a')] < 0:
                return False
        return True
posted @ 2021-02-21 00:10  Bladers  阅读(45)  评论(0)    收藏  举报