首页 > 技术文章 > Leetcode--罗马数字转整数(13)

shawn-young 2020-03-02 16:01 原文

            

 

 

 主要思路:

 用字典存储罗马数字

d = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}

在读取字符串时,若左边的字符串小于右边,则将该字符所代表的数字变为负数,否则则为正数。将每个字符所代表的数字相加即可。

class Solution:
    def romanToInt(self, s: str) -> int:
        d = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
        if len(s) == 1:
            return d[s[0]]
        ans = 0
        for i in range(len(s)-1):
            if d[s[i]] < d[s[i+1]]:
                ans -= d[s[i]]
            else:
                ans += d[s[i]]
        ans += d[s[-1]]
        return ans

踩到的坑:最开始没有用字典存储导致代码比较冗长。另外对字典的使用不太熟练,字典要按键值进行取值。(此外,键值必须是不可变的,所以键值可以是数字、字符串或者元组,但是一定不能为列表!)

 

推荐阅读