输入大于0小于3999的罗马数字,输出相对应的整数。
思路:
结果初始化为0,从左至右每一位罗马数依次转换为整数,加至待输出的整数。除第一位以外,当前一位小于当前位时,再从结果中减去两倍的前一位数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class Solution(object): romans = {'I' : 1, 'V' : 5, 'X' : 10, 'L' : 50, 'C' : 100, 'D' : 500, 'M' : 1000} def romanToInt(self, s): """ :type s: str :rtype: int """ rlen = len(s) if rlen == 0: return 0 intlst = [] for i in range(rlen): intlst.append(self.romans[s[i]]) if rlen == 1: return intlst[0] num = 0 for i in range(rlen): if i == 0: num += intlst[0] continue if intlst[i] <= intlst[i-1]: num += intlst[i] else: num += intlst[i] - 2 * intlst[i - 1] return num
|