当前位置: 代码迷 >> 综合 >> 每天一道leetecode:13、罗马数字转整数(medium)
  详细解决方案

每天一道leetecode:13、罗马数字转整数(medium)

热度:6   发布时间:2023-12-14 15:06:02.0

有点崩啊,兄弟们,一天一道leetecode不太现实啊,哭哭。

其实还是找借口,哈哈,坚持不下来也是一个问题。。。

刚刚把论文的中文版本定好了,准备明天交给老师审查一下。

言归正传,这个题仍然很简单,没有什么好说的,一个一个写出来就OK了。

话说开始的时候我还耍小聪明,想直接用12题,然后遍历一个大数找到返回,哈哈,果不其然,超时了。。。

对了,通过这道题学到了一个重点!!!!就是python里面的for循环的i,不能根据内部的变化而变化。

比如:

for i in range(5):i = i + 2print(i)

输出:2、3、4、5、6.

所以,如果想在循环里更改i,那么只能用while来实现了!!! 

完整代码:

'''
1、4、5、9、 I、IV、V、IX
10、40、50、90、X、XL、L、XC
100、400、500、900、1000 C、CD、D、CM、M、
'''
def romanToInt(s):sum = 0i = 0while i < len(s)-1:if s[i] == 'C' and s[i+1] == 'M':sum += 900i = i + 2elif s[i] == 'C' and s[i+1] == 'D':sum += 400i = i + 2elif s[i] == 'X' and s[i+1] == 'C':sum += 90i = i + 2elif s[i] == 'X' and s[i+1] == 'L':sum += 40i = i + 2elif s[i] == 'I' and s[i+1] == 'X':sum += 9i = i + 2elif s[i] == 'I' and s[i+1] == 'V':sum += 4i = i + 2elif s[i] == 'M':sum += 1000i += 1elif s[i] == 'D':sum += 500i += 1elif s[i] == 'C':sum += 100i += 1elif s[i] == 'L':sum += 50i += 1elif s[i] == 'X':sum += 10i += 1elif s[i] == 'V':sum += 5i += 1elif s[i] == 'I':sum += 1i += 1if i == len(s):return sumelif i == len(s) - 1:if s[i] == 'M':sum += 1000elif s[i] == 'D':sum += 500elif s[i] == 'C':sum += 100elif s[i] == 'L':sum += 50elif s[i] == 'X':sum += 10elif s[i] == 'V':sum += 5elif s[i] == 'I':sum += 1return sumprint(romanToInt('III'))
print(romanToInt('IV'))
print(romanToInt('IX'))
print(romanToInt('LVIII'))
print(romanToInt('MCMXCIV'))
print(romanToInt('V'))

  相关解决方案