zoukankan      html  css  js  c++  java
  • python整数和罗马数互转

    1、整数转罗马数

    num = int(12)
    # 确定个十百千各自位置上的0~9对应罗马字母
    c = {
        'g': ('', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'),
        's': ('', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'),
        'b': ('', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'),
        'q': ('', 'M', 'MM', 'MMM')
    }
    roman = []
    # 用整除和取余获得个十百千对应的数字
    roman.append(c['q'][num // 1000])
    roman.append(c['b'][(num // 100) % 10])
    roman.append(c['s'][(num // 10) % 10])
    roman.append(c['g'][num % 10])
    print(199//10)
    print(199//10%10)
    

    2、罗马数转整数

    #https://leetcode-cn.com/problems/roman-to-integer/
    #罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
    #字符          数值
    #I             1
    #V             5
    #X             10
    #L             50
    #C             100
    #D             500
    #M             1000
    #输入: "III" 输出: 3
    #输入: "IV"输出: 4
    #输入: "IX" 输出: 9
    #输入: "LVIII" 输出: 58 解释: L = 50, V= 5, III = 3.
    #输入: "MCMXCIV" 输出: 1994 解释: M = 1000, CM = 900, XC = 90, IV = 4.
    #方法一
    s = "IV"
    d = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
    result = 0
    for i in range(len(s)):
        if i < (len(s)-1) and d[s[i]] < d[s[i+1]]:
            result = result - d[s[i]]
        else:
            result = result + d[s[i]]
    print(result)
    #方法二
    s = "MCMXCIV"
    # M = 1000, CM = 900, XC = 90 and IV = 4
    # 1994
    result = 0
    d = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
    dd = ["IV", "IX", "XL", "XC", "CD", "CM"]
    for i in range(len(s)):
        print("qqqqqqqqqqqqqq",i,i+2,s[i:i + 2])
        if s[i:i + 2] in dd:
            result -= d[s[i]]
        else:
            result += d[s[i]]
    print(result)
    

      

    上班求生存,下班求发展
  • 相关阅读:
    项目管理
    智能硬件如何确定需求:场景约束
    产品设计
    产品设计之前,如何分析业务需求和用户痛点?
    微信小程序挑一挑辅助
    C#实现冲顶大会辅助工具(截图+图像识别+搜索)
    读取配置文件--AppConfig
    文件各种上传,离不开的表单
    使用C#委托来实现异步编程
    Table 组件构建过程中遇到的问题与解决思路
  • 原文地址:https://www.cnblogs.com/ljf520hj/p/15204470.html
Copyright © 2011-2022 走看看