LeetCode第20题有效括号代码调试遇必选参数缺失问题求助
问题分析与修复方案
你的代码里有两个明确问题导致报错,逐个解决:
1. 实例方法调用方式错误
isValid是Solution类的实例方法,直接用Solution.isValid("{[]}")调用时,Python会把字符串"{[]}"当作第一个参数self(实例本身),而非方法需要的s参数,因此会提示“缺少必需的位置参数”。
正确的调用方式是先创建类的实例,再调用方法:
sol = Solution() print(sol.isValid("{[]}"))
2. 变量名拼写错误
代码里定义的括号映射字典叫parenthesis,但判断逻辑里写成了paren[i]——这个未定义的变量会触发NameError,也是你创建实例后仍报错的核心原因。
把paren[i]改成parenthesis[i]即可。
修复后的完整代码
class Solution: def isValid(self, s: str) -> bool: parenthesis = {"}":"{", "]":"[", ")":"(" } stack = [] for i in s: if i in parenthesis: # 修复变量名拼写错误 if not stack or parenthesis[i] != stack[-1]: return False else: stack.pop() else: stack.append(i) return stack == [] # 正确调用示例 sol = Solution() print(sol.isValid("{[]}")) # 输出 True
内容的提问来源于stack exchange,提问作者William Chen
相关产品推荐
相关产品推荐

