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

LeetCode13罗马转整数场景下for循环range步长异常运行问题

罗马数字转整数代码循环问题成因分析

1. 内层循环索引固定为1的直接原因

Python的range(start, stop, step)遵循左闭右开的生成规则:仅包含满足start ≤ 数值 < stop的整数,每次累加步长后如果结果≥stop就停止生成。
你测试用例字符串为"III",长度为3,内层循环定义为range(1, len(s), 2),等价于range(1, 3, 2),计算得生成的序列仅包含[1],因此每次进入内层循环只会返回索引1。

2. 多次出现索引1的根本原因

你写的是两层嵌套for循环,外层循环range(0, 3, 2)会生成[0,2]两个值,会触发两次内层循环:

  • 第一次外层循环cind=0时,进入内层循环,遍历得到cind2=1,打印loop2 1
  • 第二次外层循环cind=2时,内层循环的range会重新初始化,不会继承上一次遍历的位置,因此还是得到cind2=1,再次打印loop2 1
    这就是你观察到“第二次循环仍返回索引1”的原因。

额外逻辑问题提示

你当前的嵌套循环逻辑不符合罗马数字的遍历规则:会出现后位索引和前位索引重复配对的问题(比如测试用例中会把s[2]和s[1]配对),无法得到正确结果。建议调整为单循环遍历:每次判断当前位和下一位的组合是否属于特殊罗马组合,是则累加组合值、步进2位,否则累加当前位值、步进1位即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:12:02