题目
思路
给出一串罗马数字,需要转换成阿拉伯数字,其中4,9,40,90,400,900的表达方式会特殊。
解决办法:只需要将罗马字符放入一个列表,从左到右(罗马数字左大右小)读取,遇到左小右大的情况,可以判定为上述特殊情况,做减法即可。
因为只需要读取一遍列表与构建的字典{罗马字符:阿拉伯数字}做匹配,所以,
时间复杂度:O(n)
代码实现
class Solution:
def romanToInt(self,rnum):
rnum = input("input:")
dic = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}
rnum = list(rnum)
s =0
if len(rnum) <1 or len(rnum)> 15:
return 0
for i in range(len(rnum)-1):
if dic[rnum[i]] < dic[rnum[i + 1]]:
s = s - dic[rnum[i]]
else:
s = s + dic[rnum[i]]
s = s + dic[rnum[i+1]]
return s