• Leetcode题库——13.罗马数字转整数



    @author: ZZQ
    @software: PyCharm
    @file: Luoma2Int.py
    @time: 2018/9/16 17:06
    要求: 罗马数字转数字
    字符 数值
    I 1
    V 5
    X 10
    L 50
    C 100
    D 500
    M 1000
    罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。
    27 写做 XXVII, 即为 XX + V + II 。
    通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,
    例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。
    同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
    1) I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
    2) X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
    3) C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
    思路: 每次先将当前罗马数字表示的数值加上,然后判断后面跟的是不是六种特殊情况之一,如果是,则减去二倍的当前罗马数字表示的数值。

    
    
    class Solution():
        def __init__(self):
            pass
    
        def str2int(self, n):
            if n == 'I':
                return 1
            if n == 'V':
                return 5
            if n == 'X':
                return 10
            if n == 'L':
                return 50
            if n == 'C':
                return 100
            if n == 'D':
                return 500
            if n == 'M':
                return 1000
    
        def romanToInt(self, s):
            """
            :type s: str
            :rtype: int
            """
            roman_len = len(s)
            value = 0
            currstr = ''
            for i in range(0, roman_len):
                value += self.str2int(s[i])
                if currstr == 'I' and s[i] == 'V':
                    value += - 2 * self.str2int(currstr)
                if currstr == 'I' and s[i] == 'X':
                    value += - 2 * self.str2int(currstr)
                if currstr == 'X' and s[i] == 'L':
                    value += - 2 * self.str2int(currstr)
                if currstr == 'X' and s[i] == 'C':
                    value += - 2 * self.str2int(currstr)
                if currstr == 'C' and s[i] == 'D':
                    value += - 2 * self.str2int(currstr)
                if currstr == 'C' and s[i] == 'M':
                    value += - 2 * self.str2int(currstr)
                currstr = s[i]
            return value
    
    
    if __name__ == "__main__":
        x = "IX"
        answer = Solution()
        print answer.romanToInt(x)
    
    CV小蜡肉
  • 相关阅读:
    基于jdk8+selenium3+chrome86的UI自动化测试
    服务器虚拟化管理解决方案PVM发送c+a+d组合键
    web端测试技巧记录
    redis-基本数据类型及应用场景
    idea编译时报GC overhead limit exceeded
    cmd常用命令
    @property和@属性.setter的用法
    游陶然亭记
    山城
    记京都春节
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9671358.html
Copyright © 2020-2023  润新知