13. Roman to Integer

作者: ciantian | 来源:发表于2017-10-26 21:28 被阅读4次

    最近再刷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

        本文链接:https://www.haomeiwen.com/subject/luklpxtx.html