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
相关产品推荐
相关产品推荐

