1:题目描述
将罗马数字转为十进制阿拉伯数字
2:题目分析
①Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)
②罗马数字中表示最大值的字母左侧数字为负,右侧为正
③表示负数的字母最多重复一次
3:解体过程
1 class Solution(object): 2 def romanToInt(self, s): 3 """ 4 :type s: str 5 :rtype: int 6 """ 7 s_len=len(s) 8 sum=0 9 i=0 10 roman={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000} #设置字典,便于取值 11 while i<s_len-1: 12 if roman[s[i]]<roman[s[i+1]]:#因为负值不重复,所以只比较紧邻的就可以了 13 sum=sum-roman[s[i]] 14 else: 15 sum=sum+roman[s[i]] 16 i=i+1 17 sum=sum+roman[s[s_len-1]] 18 return sum
4:解题感悟
发现负值不重复后代码就简洁很多了,想想自己期末考写的,真的很脑残呐┭┮﹏┭┮