题目:
将罗马数字转化为阿拉伯数字,具体对应关系可以见上一篇博客,不再详述,给出几个列子
Example 1:
Input: 3
Output: “III”
Example 2:
Input: 4
Output: “IV”
Example 3:
Input: 9
Output: “IX”
Example 4:
Input: 58
Output: “LVIII”
Explanation: L = 50, V = 5, III = 3.
Example 5:
Input: 1994
Output: “MCMXCIV”
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
思路: 此题较为简单,上一题弄懂了这一题就比较容易理解,讨论出4, 9, 40, 90, 400, 900这几个特殊值的表示即可。
代码仅供参考:
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
dic = dic = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000, 'IV':4, 'IX':9, 'XL':40, 'XC':90, 'CD':400, 'CM':900}
num = 0
i = 0
n = len(s)
if n == 0:
return 0
while i < n-1:
if s[i]+s[i+1] in dic.keys():
num = num + dic[s[i]+s[i+1]]
i += 1
else:
num = num + dic[s[i]]
i += 1
if i == n:
return num
else:
return num + dic[s[-1]]