zoukankan      html  css  js  c++  java
  • Leetcode_12【整数转罗马数字】

    文章目录:

    • 题目
    • 脚本一及注释
    • 脚本一逻辑

    题目:

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

    字符   数值
    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。这个特殊的规则只适用于以下六种情况:

    I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
    X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
    C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
    给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。

    示例 1:

    输入: 3
    输出: "III"
    示例 2:

    输入: 4
    输出: "IV"
    示例 3:

    输入: 9
    输出: "IX"
    示例 4:

    输入: 58
    输出: "LVIII"
    解释: L = 50, V = 5, III = 3.
    示例 5:

    输入: 1994
    输出: "MCMXCIV"
    解释: M = 1000, CM = 900, XC = 90, IV = 4.


    脚本一及注释:【用时:48ms】

    class Solution:
        def intToRoman(self, num: int) -> str:      #题目定义输出及输出,输入为整型,且名为num的变量,输出为字符串型变量
            num1 = num % 1000                #数值取余
            count1 = int(num / 1000)            #获取输入数值包含多少个1000
            num2 = num1 % 100                #数值再取余
            count2 = int(num1 / 100)            #获取取余后的数值包含多少个100
            num3 = num2 % 10                 #数值再取余
            count3 = int(num2 / 10)             #获取取余后的数值包含多少个10
            list1 = ['M','MM','MMM']            #定义列表
            list2 = ['C','CC','CCC','CD','D','DC','DCC','DCCC','CM']  #定义列表
            list3 = ['X','XX','XXX','XL','L','LX','LXX','LXXX','XC'] #定义列表
            list4 = ['I','II','III','IV','V','VI','VII','VIII','IX'] #定义列表
            str = ""                        #定义空字符串
            if count1 != 0:                    #判断包含1000的个数是否为零,若不为零则进入判断语句
                str = str + list1[count1 - 1]         #根据变量值,将空字符串加上列表某个元素 
            if count2 != 0:                    #判断包含100的个数是否为零,若不为零则进入判断语句
                str = str + list2[count2 - 1]         #根据变量值,将字符串加上列表中某个元素
            if count3 != 0:                    #同上
                str = str + list3[count3 - 1]          #同上
            if num3 != 0:                      #同上
                str = str + list4[num3 -1]            #同上
            return(str)                        #判断完成后,返回字符串变量
    class Solution:
        def intToRoman(self, num: int) -> str:
            num1 = num % 1000
            count1 = int(num / 1000)
            num2 = num1 % 100
            count2 = int(num1 / 100)
            num3 = num2 % 10
            count3 = int(num2 / 10)
            list1 = ['M','MM','MMM']
            list2 = ['C','CC','CCC','CD','D','DC','DCC','DCCC','CM']
            list3 = ['X','XX','XXX','XL','L','LX','LXX','LXXX','XC']
            list4 = ['I','II','III','IV','V','VI','VII','VIII','IX']
            str = ""
            if count1 != 0:
                str = str + list1[count1 - 1]
            if count2 != 0:
                str = str + list2[count2 - 1]
            if count3 != 0:
                str = str + list3[count3 - 1]
            if num3 != 0:
                str = str + list4[num3 -1]
            return(str)
    未加注释代码

    脚本一逻辑:

    • 第一:此题输入的值范围已知其只有四位数
    • 第二:这个转换,其实就是每个进制的数值对应特定的值,这是固定不变的,所以可用列表来固定进制中对应的罗马数字;比如十位数的1,2,3,4,5,6,7,8,9分别对应罗马数字的'X','XX','XXX','XL','L','LX','LXX','LXXX','XC'
    • 第三:只需获取每个进制的数值,并转换为特定列表中的元素即可求解
  • 相关阅读:
    Where条件的in里面放太多数据导致很慢
    获取项目文件目录下的所有文件路径
    如何将数据转换成XML格式
    微信6.2开发笔记
    sql server 2008导出数据注意事项
    IIS7.5下404错误设置失效的问题
    采用ASP.NET IIS 注册工具 (Aspnet_regiis.exe)对web.config实行本地加密
    webkit自定义滚动条
    ueditor1_4_3-utf8-net使用笔记
    WebDev.WebServer40.exe已停止工作
  • 原文地址:https://www.cnblogs.com/mailong/p/12008439.html
Copyright © 2011-2022 走看看