class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
roman_dict = {'M':1000, 'D':500, 'C':100, 'L':50, 'X':10, 'V':5, 'I':1}
res = 0
for i in range(len(s)-1):
if roman_dict[s[i]] < roman_dict[s[i+1]]:
res -= roman_dict[s[i]]
else:
res += roman_dict[s[i]]
return res + roman_dict[s[-1]]
Sol = Solution()
print Sol.romanToInt('VIII')
0,参考代码
1,题目是要求将罗马数字转换为整型的数字形式。但是具体的转换规则并没有给出。因此算法的主要是模拟这种规则:当左边代表的数字小于紧挨着它的右边的那个数字时,表示小于这些数值:IV就是5-1=4。反之,则是大于这些数值:VI就是5+1=6。因此,对于这种形式,我们只需要按位比较就可以得到最后结果。需要注意的是最后一位要单独拿出来进行处理。
3,整个算法的数据结构是利用字典来实现的,罗马字符所代表的具体数值也可以从字典中得到。