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

整数转罗马数字代码仅支持到1010、新增判断触发超时如何解决

问题排查与解决

超时原因

  1. 核心诱因是你混淆了numerals字典的键值对应关系:字典的键是整数,值是罗马字符,你把两者搞反后,拿字符串类型的罗马字符和整数做大小比较:
    • Python3环境下会直接抛出类型不支持比较的错误
    • Python2环境允许跨类型比较,判断结果会固定为真或假,直接导致循环无法正常退出,持续运行就触发了超时错误
  2. 你额外新增的if num < v逻辑完全多余,原代码的倒序遍历+while结构本身可以自动处理循环跳出,不需要额外加判断逻辑。

修复方案

你不需要新增额外的if判断,只要把键值的对应关系捋顺即可,修复后的代码可正确处理13999范围内的整数转罗马数字(标准罗马数字的常规表示范围就是13999,超出范围的需要用上划线扩展规则,不在常规需求范围内):

class Solution:
    def intToRoman(self, num: int) -> str:
        numerals = {
            1: "I", 
            4: "IV", 
            5: "V", 
            10: "X",
            40: "XL",
            50: "L", 
            90: "XC",
            100: "C", 
            400: "CD",
            500: "D", 
            900: "CM",
            1000: "M"
        }
        
        output = ""
        # 明确变量名:int_val为整数值,roman_char为对应罗马字符
        for int_val, roman_char in sorted(numerals.items(), reverse=True):
            while num >= int_val:
                output += roman_char
                num -= int_val
        
        return output

如果需要处理大于3999的数值,可在函数入口处加范围校验,超出范围直接返回提示或按扩展规则处理即可,不要在循环中添加多余的判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:06:03