zoukankan      html  css  js  c++  java
  • 罗马数字与阿拉伯数字转换

    罗马数字与阿拉伯数字对应关系如下:

    且“II”表示2,“III”表示3,“IV”表示4,“VI表示6”,“VII”表示7,“VIII”表示8,“IX”表示9,其余的类似。

    阿拉伯数转换成罗马数字

    class Solution(object):
        def intToRoman(self, num):
            """
            :type num: int
            :rtype: str
            """
            
            if not num:
                return ""
            out = ""
            i = 3
            while i >= 0:
                out += self.get_roman(i,num//(10**i))
                num %= (10**i)
                i -= 1      
            return out
        
        def get_roman(self,power,quotient):
            power_to_roman = {0:["I","V","X"],1:["X","L","C"],2:["C","D","M"],3:["M"]}
            romans = power_to_roman[power]
            if quotient <= 3:
                out = quotient*romans[0]
            elif quotient == 4:
                out = romans[0]+romans[1]
            elif quotient == 5:
                out = romans[1]
            elif quotient <= 8:
                out = romans[1]+(quotient-5)*romans[0]
            else:
                out = romans[0]+romans[2]
            return out

    罗马数字转换为阿拉伯数字:

    class Solution(object):
        def romanToInt(self, s):
            """
            :type s: str
            :rtype: int
            """
            if not s:
                return 0
            Roman_to_num = {'I':1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}
            before = {"V":"I","X":"I","L":"X","C":"X","D":"C","M":"C"}
            
            stack = []
            num = 0
            i = len(s)-1
            while i >= 0:
                if not stack:
                    stack.append(s[i])
                else:
                    last = stack.pop()
                    if last in before and s[i] == before[last]:
                        num += Roman_to_num[last] - Roman_to_num[s[i]]
                    else:
                        stack.append(last)
                        stack.append(s[i])
                i -= 1
            for i in stack:
                num += Roman_to_num[i]
            return num
  • 相关阅读:
    JNI接口的使用(简单版)
    Android内核剖析(1)
    Spring 和 Mybatis 整合
    AppStore被拒原因及总结
    iOS开发中,应用内直接跳转到Appstore
    ios 中生成二维码和相册中识别二维码
    IOS开发中(null)与<null>的处理
    融云即时通讯~~
    iOS中菊花。。。
    关于判断邮箱 手机号等一系列的正则表达式
  • 原文地址:https://www.cnblogs.com/wenqinchao/p/10583494.html
Copyright © 2011-2022 走看看