【发布时间】:2020-12-23 14:49:56
【问题描述】:
我试图在 Python 中解决一个问题(检查字符串 s 和 t 是否为字谜):
算法:
要检查t 是否是s 的重新排列,我们可以计算两个字符串中每个字母的出现次数并进行比较。由于s 和t 都只包含来自a-z 的字母,所以一个大小为26 的简单计数器table 就足够了。
我们可以为s 中的每个字母递增计数器,并为t 中的每个字母递减计数器,然后检查计数器是否回到零。
代码:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if len(s) != len(t):
return False
table = {}
for i in range(len(s)):
table[s[i]] = table.get(table[s[i]], 0) + 1
for i in range(len(t)):
table[t[i]] = table.get(table[s[i]], 0) - 1
if table[t[i]] < 0:
return False
return True
然而,我在第一个循环中得到一个 KeyError。为了解决这个问题,我尝试使用.get(),但仍然无法解决。
我收到以下错误:
【问题讨论】:
-
您需要准确地告诉我们您遇到了什么错误。什么是回溯?
-
另外,
table是什么?请edit 包含minimal reproducible example -
table[s[i]] = table.get(table[s[i]], ...)您正在尝试访问table中的密钥,您正在那里进行设置,而table无论如何此时都是空的…… -
table[s[i]] = table.get(s[i], 0) + 1? -
@deadshot 是的,谢谢。这修复了错误。但是,代码似乎没有正确解决问题:)