# -*- coding: utf-8 -*-
#基本字符	        I   V	X	L	C     D       M
# 对应阿拉伯数字	1	5	10	50	100	  500	1000
#
# 计数规则：
# - 相同的数字连写，所表示的数等于这些数字相加得到的数，例如：III = 3
# - 小的数字在大的数字右边，所表示的数等于这些数字相加得到的数，例如：VIII = 8
# - 小的数字，限于（I、X和C）在大的数字左边，所表示的数等于大数减去小数所得的数，例如：IV = 4,这条规则好像这题不管
# - 正常使用时，连续的数字重复不得超过三次
# - 在一个数的上面画横线，表示这个数扩大1000倍（本题只考虑3999以内的数，所以用不到这条规则）
# - 从前向后遍历罗马数字，如果某个数比前一个数小，则加上该数。反之，减去前一个数的两倍然后加上该数


#本题要注意的是：这道题我还不太会！！！！！！！！！！！！！！！！！
class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        lookup = {
            'I': 1,
            'V': 5,
            'X': 10,
            'L': 50,
            'C': 100,
            'D': 500,
            'M': 1000
        }
        res = 0
        for i in range(len(s)):
            if i > 0 and lookup[s[i]] > lookup[s[i-1]]:
                res += lookup[s[i]] - 2 * lookup[s[i-1]]
            else:
                res += lookup[s[i]]
        return res