如何解决PYTHON:处理KeyError
我正在尝试解决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()
,但仍然无法解决问题。
我遇到以下错误:
感谢您的帮助。
解决方法
- 在
dict
中寻找价值时,您会查询两次:table.get(table[s[i]],0)
。 -
[]
和.get()
是同义词,除了后者在为空时是安全的并返回默认值。 - 这应该是您需要的循环。归功于@deadshot。
for i in range(len(s)):
table[s[i]] = table.get(s[i],0) + 1
for i in range(len(t)):
table[t[i]] = table.get(t[i],0) - 1
if table[t[i]] < 0:
return False
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。