文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

罗马数字与阿拉伯数字转换

2023-01-31 00:18

关注

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

且“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

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯