Description
Difficulty: Easy
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
罗马数字转换为阿拉伯数字。
Solution
一道很有趣的题。根据罗马数字左加右减的规则,在字符串长度大于 0 的情况下,每次取字符串第一个元素,若第一个元素是 IXC 其中一个且小于第二个元素,则总和加第二个元素减第一个元素,字符串修改为从第三个元素开始;
若字符串长度为 1 或第一个元素不小于第二个元素,则总和加上第一个元素的值,字符串从第二个元素开始。
返回总和。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
class (object): def romanToInt(self, s): """ :type s: str :rtype: int """ dict = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} sum = 0 while len(s) > 0: if len(s) == 1: sum += dict[s[0]] s = s[1:] elif dict[s[0]] < dict[s[1]] and s[0] in 'IXC': sum += (dict[s[1]] - dict[s[0]]) s = s[2:] else: sum += dict[s[0]] s = s[1:] return sum
|
近期评论