罗马数字转整数的超简单思路
1.思路
好久没有做过题,记得之前有接触到这一题,也是罗马数字转阿拉伯数字,不过要比这题简单。看了官方给的提示后逐渐有了思路,应该先用字典建立一个罗马数字与阿拉伯数字的映射,再从后往前处理这个罗马数字字符串。
2.解题方法
从后往前用while循环处理罗马数字字符串,当遇到成对的特殊罗马数字时,便进行相应的特殊处理,并让index-=2。对于每一个ifelse里面的处理都把结果添加到final_num中,最后返回final_num。
3.Code
class Solution:
def romanToInt(self, s: str) -> int:
roman_num={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
final_num=0
index=len(s)-1
while index>=0:
if s[index]=='V' or s[index]=='X':
if index==0:
final_num+=roman_num[s[index]]
index-=1
else:
if s[index-1]=='I':
num=roman_num[s[index]]-roman_num[s[index-1]]
final_num+=num
index-=2
else:
final_num+=roman_num[s[index]]
index-=1
elif s[index]=='L' or s[index]=='C':
if index==0:
final_num+=roman_num[s[index]]
index-=1
else:
if s[index-1]=='X':
num=roman_num[s[index]]-roman_num[s[index-1]]
final_num+=num
index-=2
else:
final_num+=roman_num[s[index]]
index-=1
elif s[index]=='D' or s[index]=='M':
if index==0:
final_num+=roman_num[s[index]]
index-=1
else:
if s[index-1]=='C':
num=roman_num[s[index]]-roman_num[s[index-1]]
final_num+=num
index-=2
else:
final_num+=roman_num[s[index]]
index-=1
else:
final_num+=roman_num[s[index]]
index-=1
return final_num