golang爬虫 overflow Jetbains全家桶 swift xcode azure meteor hive variant joomla vue图表 进销存源码 jquery获取dom对象 软件测试实战项目 axure组件库下载 hadoop入门书籍 spark文档 matlab对数函数 edate函数的使用方法 mysql修改字段值 java 大文件上传 mysql数据库 python中count python命令行 python基本语法 python的安装 python图形界面开发 python实例教程 java斐波那契数列 java实现 java例子 java迭代器 java初级教程 java的运行环境 java的泛型 java入门课程 java的map java获取 java的框架 java运行
当前位置: 首页 > 学习教程  > 编程语言

罗马数字转整数_CodingPark编程公园

2020/11/4 14:10:02 文章标签:

罗马数字转整数 题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M …

罗马数字转整数

题目

罗马数字包含以下七种字符: 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:
输入: "III"
输出: 3

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

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

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

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

提示:

题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。
IC 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX 。
关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。

链接:https://leetcode-cn.com/problems/roman-to-integer


解法

class Solution:
    def romanToInt(self, s: str) -> int:
        j = 0
        res = 0
        hashDesk = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}

        for i in s[::-1]:
            if (j == 'V' or j == 'X') and i == 'I':
                special = hashDesk[j] - hashDesk[i]
                res = res + special - hashDesk[j]
            elif (j == 'L' or j == 'C') and i == 'X':
                special = hashDesk[j] - hashDesk[i]
                res = res + special - hashDesk[j]
            elif (j == 'D' or j == 'M') and i == 'C':
                special = hashDesk[j] - hashDesk[i]
                res = res + special - hashDesk[j]

            else:
                res = res + hashDesk[i]

            j = i

        return res

在这里插入图片描述
在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_350095.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?