博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
罗马数字与阿拉伯数字转换
阅读量:5094 次
发布时间:2019-06-13

本文共 1791 字,大约阅读时间需要 5 分钟。

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

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

 

转载于:https://www.cnblogs.com/wenqinchao/p/10583494.html

你可能感兴趣的文章
Python第一部分--Python简介+第一个程序+Python2和Python3介绍 001-016
查看>>
CSS Hack
查看>>
Django REST framework(官方说明文档翻译)(1快速开始 )
查看>>
JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
查看>>
MSSQL 手工入侵网站方法
查看>>
memcache 加载(对象)所遇到的问题。资源
查看>>
linux命令df中df -h和df -i
查看>>
201771010130 王志成《面向对象程序设计(java)》第十二周学习总结
查看>>
百词斩
查看>>
Unity3D 开发问题记录笔记
查看>>
PHPMailer不能发送邮件
查看>>
Linux 下的图形库介绍
查看>>
第九周编程总结
查看>>
007-li标签CSS水平居中垂直居中
查看>>
Python -- 基础
查看>>
第五次作业
查看>>
WCF 第二章 契约 WSDL中的操作名字、类型、操作和命名空间
查看>>
别再写 bug 了,避免空指针的 5 个案例!
查看>>
面试问我 Java 逃逸分析,瞬间被秒杀了。。
查看>>
公式/定理
查看>>