码迷,mamicode.com
首页 > 其他好文 > 详细

13.罗马数字转整数

时间:2019-08-14 22:07:59      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:字母转   +=   数字   罗马数字转整数   style   罗马数字   and   ant   表示   

class Solution:
    def romanToInt(self, s: str) -> int:
        # 将各个字母表示的数字存入字典中
        numeral_map = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}
        # 存储罗马字母转成的整数值
        result = 0
        
        for i in range(len(s)):
            # 判断后一个数是否大于前一个数
            if i > 0 and numeral_map[s[i]] > numeral_map[s[i-1]]:
                # 为什么要*2?因为先执行的else语句,前一个数会加上后一个数。“MCMXCIV”为例:
                # 第一步:i = 0, 执行else: result = 1000
                # 第二步:i = 1, C<M, 执行else:result = 1000+100
                # 第三步:i = 2, M>C, 执行if: result = 1000+100 + 1000-2*100 = 1900,知道为什么*2了吧!
                result += numeral_map[s[i]] - 2*numeral_map[s[i-1]]
            else:
                result += numeral_map[s[i]]
        return result

 

13.罗马数字转整数

标签:字母转   +=   数字   罗马数字转整数   style   罗马数字   and   ant   表示   

原文地址:https://www.cnblogs.com/WJZheng/p/11354657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!