13. Roman to Integer

最近再刷leetcode,除了链表之外的都用python 实现,贴出一些代码,希望指正.

问题描述:

罗马数字转为整数
在没做这个题之前我想大家应该对罗马数字都没什么了解吧.
I = 1;
V = 5;
X = 10;
L = 50;
C = 100;
D = 500;
M = 1000;
其中每两个阶段的之间有一个减法的表示,比如900=CM, C写在M前面表示M-C。

解决方案:

先对字符从小到大进行编号.
难点是再遍历的时候遇到小的再前面大的再后面计算一次减法,然后后退两个.

实现代码

class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        s = s +'I'
        list1 = ["I", "V", "X", "L", "C", "D", "M"]
        list2 = [1, 5, 10, 50, 100, 500, 1000]
        list_all = [list1, list2]
        num_sum = 0
        n = 1
        while n < len(s):
            index1 = list1.index(s[n - 1])
            index2 = list1.index(s[n])
            # print(index1, index2)
            if index1 < index2:
                num_sum = num_sum + (list2[index2] - list2[index1])
                n = n + 2
            else:
                num_sum = num_sum + list2[index1]
                n = n + 1
            # print(num_sum)
        return num_sum
solution = Solution()
print(solution.romanToInt("DCXXI"))

你可能感兴趣的:(13. Roman to Integer)