leetcode13 Roman to Integer

 1 """
 2 先用dict存储罗马数字对应的阿拉伯数字,
 3 IV可划分为I,V,比较相邻字符的大小进行加减操作
 4 """
 5 class Solution:
 6     def romanToInt(self, s):
 7         if s == None:                     #讨论边界情况
 8             return 0
 9         sum = 0
10         dit = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
11         for i in range(len(s)):
12             if i == 0:                       #因为下面的i-1,单独讨论i==0的情况
13                 sum = dit[s[0]]
14             elif dit[s[i]] <= dit[s[i-1]]:   #!!!以此为判别条件,进行加减
15                 #bug 没有写 = 的情况,对于III案例测试 答案错误
16                 sum += dit[s[i]]
17             else:
18                 sum = sum + dit[s[i]] - 2*dit[s[i-1]] #减去之间加的,所以乘2
19         return sum

 

posted @ 2020-02-05 21:51  yawenw  阅读(101)  评论(0编辑  收藏  举报