You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode 242: Valid Anagram代码运行报错KeyError: u'a'求助

问题排查与解决:LeetCode 242 有效异位词代码错误

错误原因分析

你的代码存在三个核心问题,直接导致了KeyError和逻辑失效:

  • 赋值运算符误用:使用==(比较运算符)替代了=(赋值运算符),导致字典CountS和CountT始终为空,后续访问键时触发KeyError。
  • 变量名不匹配:循环遍历的变量是hashS、hashT,但实际定义的字典变量是CountS、CountT,完全不对应。
  • 缩进错误:if len(s) != len(t):一行缩进不正确,未与函数内其他代码保持一致,会引发语法或逻辑异常。

修正后的代码

class Solution(object):
    def isAnagram(self, s, t):
        if len(s) != len(t):
            return False
        CountS, CountT = {}, {}

        for i in range(len(s)):
            CountS[s[i]] = 1 + CountS.get(s[i], 0)
            CountT[t[i]] = 1 + CountT.get(t[i], 0)
        for c in CountS:
            if CountS[c] != CountT.get(c, 0):
                return False
        return True

额外简化方案

方案一:使用内置Counter

借助Python标准库的collections.Counter,可以大幅简化代码,同时避免手动计数的错误:

from collections import Counter

class Solution(object):
    def isAnagram(self, s, t):
        return Counter(s) == Counter(t)

方案二:排序对比法

如果不允许使用额外库,排序后直接对比也是简单有效的解法:

class Solution(object):
    def isAnagram(self, s, t):
        return sorted(s) == sorted(t)

内容的提问来源于stack exchange,提问作者zzzprograming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:22:09