LeetCode字符串简单题13罗马数字转整数思路根据ds本题用字典才是最简单最快的方法但是由于本人还没学字典的用法所以第一反应是用笨拙的逐字循环读取根据已知条件计算求和。问题和方案1.for循环不熟悉for i in rangestartstopstepstop和step写反了导致所有罗马数字只读取第一个数。2.for i in range因为两个罗马数字组合在一起可能有特殊的计算方式所以我原本希望遇到这种特殊情况用一个elif分支单独判断完成后修改i的值跳过已经被考虑过的下一个数但是由于range方法的特性在实际执行过程中不管循环体内对i做了什么操作执行下一次循环的时候还是执行i1操作导致计算结果和预期不同。所以这里我把for循环改成了while循环 while i lens手动操作i的值规避这个问题。3.如果一定要用for循环呢我们可以再定义一个布尔变量用来标记在处理该数字的时候下一个数字需不需要跳过例如如果该变量的值为TRUE则直接continue直接回到for循环让for循环自动将i1实现跳过。总结在遍历的时候如果需要跳过元素while循环远比for循环灵活两个循环的时间复杂度都是On空间复杂度都是O1https://leetcode-cn.com/problems/roman-to-integer/