代码随想录第六天刷题

今日主攻为哈希表:

第一题为:有效的字母异位词

卡哥分别给出了三种答案,说实话,我不太理解,问了AI,第一种适合面试竞赛,第二种适合理解哈希表,第三种适合实际项目

我以第一种为例进行了复制

    def isAnagram(self, s: str, t: str) -> bool:
        record = [0] * 26   #记录(指作为一个单位来处理的一组相连的数据)
        for i in s:
            #并不需要记住字符a的ASCII,只要求出一个相对数值就可以了
            record[ord(i) - ord("a")] += 1   #将字符映射到数组索引并进行计数
        for i in t:
            record[ord(i) - ord("a")] -= 1
        for i in range(26):
            if record[i] != 0:
                #record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。
                return False
        return True

重点理解

  1. 第一个循环:把字符串s的字母放入"篮子"(加计数) 第二个循环:从"篮子"中取出字符串t的字母(减计数) 第三个循环:检查"篮子"是否空了(是否平衡)
  2. ord()返回的是字符的Unicode码点,对英文来说就是ASCII码
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务