You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyCharm运行正常的罗马数字转整数代码在LeetCode报KeyError如何修复?

罗马数字转整数LeetCode报错解决

问题原因

你的代码在本地运行正常,但LeetCode上报错KeyError: '"',核心问题有两个:

  1. 保留了本地测试代码:提交的代码包含input('roman')、实例创建和打印语句,LeetCode的测试逻辑是直接将测试用例字符串传入romanToInt方法,不需要手动读取输入,这会导致代码错误读取到包含引号的非法内容,触发KeyError。
  2. 全局变量污染:romanD和oper是全局变量,LeetCode会多次调用romanToInt方法,oper会累积之前测试的结果,导致后续计算错误。

修正后的代码

class Solution(object):
    def romanToInt(self, s):
        romanD = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
        oper = []
        for j in range(len(s)):
            if j + 1 == len(s):
                break
            current = romanD[s[j]]
            next_val = romanD[s[j+1]]
            if current < next_val:
                oper.append(-current)
            else:
                oper.append(current)
        oper.append(romanD[s[-1]])
        return sum(oper)

关键修正点

  • 把romanD和oper改为方法内部的局部变量,避免多次调用时的状态污染。
  • 移除所有本地测试相关代码(input、实例创建、打印),只保留LeetCode要求的Solution类和romanToInt方法。
  • 用s[-1]替代s[len(s)-1],简化最后一位的取值逻辑。
  • 提前取出当前和下一位的数值,让代码逻辑更清晰。

内容的提问来源于stack exchange,提问作者schaggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:55:12