【发布时间】:2022-01-23 23:57:56
【问题描述】:
我首先定义了一个需求字典(允许使用不同的括号),每个键的初始值为 0。然后我将输入转换为列表。然后对于列表中的每个元素,如果它作为字典中的键存在,则该键的值将增加 1。最后,将比较对应的键值,“真”或“假”将如果有相等的对应括号,则显示 - 即如果 '(' 的数量 == ')' 的数量。
class Solution:
def isValid(self, s: str) -> bool:
d = {'(': 0, ')': 0, '{': 0, '}': 0, '[': 0, ']': 0}
s = list(s)
for i in s:
if i in d.keys():
d[i] += 1
if d['('] == d[')'] and d['{'] == d['}'] and d['['] == d[']']:
return 'true'
else:
return 'false'
当 s = "(]" 时,显示的是 true 而不是 false。请有人解释为什么会这样?它似乎也只通过了 24/91 测试用例,所以一定有一个突出的错误我不能似乎发现了:(
【问题讨论】:
-
您可能应该返回布尔值,而不是字符串。 (此外,您只检查计数,而不是实际匹配,但这是一个不同的错误。)
-
布尔返回不使用引号,仅返回 True 或返回 False。它区分大小写。您正在返回一个字符串,因此它将返回 True。 w3schools.com/python/python_booleans.asp
-
我现在正在写一个答案 - 我不喜欢人们在中途删除问题,所以不这样做将不胜感激 - 这是一个好问题。
标签: python dictionary debugging