博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode13. 罗马数字转整数
阅读量:5300 次
发布时间:2019-06-14

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

题目:

  罗马数字包含以下七种字符: 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.

来源:

解答:

leetcode优秀方案(来自力扣答案统计页,没有明确作者是谁,可留言告知):

1 class Solution: 2     def romanToInt(self, s: str) -> int: 3         d = {
"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000} 4 sum = 0 5 s = s[::-1] 6 last = None 7 for x in s: 8 9 if last and d[x] < last:10 sum -= 2 * d[x]11 sum += d[x]12 last = d[x]13 return sum

个人愚见:

1 class Solution(object): 2     def romanToInt(self, s): 3         """ 4         :type s: str 5         :rtype: int 6         """ 7         roman_to_int_map = { 8             'I': 1, 9             'V': 5,10             'X': 10,11             'L': 50,12             'C': 100,13             'D': 500,14             'M': 1000,15             'IV': 4,16             'IX': 9,17             'XL': 40,18             'XC': 90,19             'CD': 400,20             'CM': 90021         }22         _int = 023         i = 024         while True:25             if roman_to_int_map.get(s[i:i+2]) is not None:26                 _int += roman_to_int_map[s[i:i+2]]27                 i += 228             else:29                 _int += roman_to_int_map[s[i]]30                 i += 131 32             if i >= len(s):33                 break34 35         return _int

 

转载于:https://www.cnblogs.com/catyuang/p/11107719.html

你可能感兴趣的文章
【模考】2018.03.10 图
查看>>
转发《离职引发的诸多感触 》
查看>>
C语言中printf和cprintf有什么区别啊
查看>>
Log4j log for java(java的日志) 的使用
查看>>
java.split();用法
查看>>
Python全栈 Web(概述、HTML基础语法)
查看>>
Mongodb----基础
查看>>
【转载】Xcode6中添加pch文件
查看>>
英语学习第一周
查看>>
java正则表达式详解与应用(学习必备)
查看>>
人民币对澳元汇率的大数据分析与预测
查看>>
会话管理
查看>>
ata
查看>>
VIM
查看>>
计算分页数据的算法
查看>>
Vim常用命令
查看>>
hdu1798: Tell me the area
查看>>
jquery的$().each,$.each的区别
查看>>
Apache Commons 工具集使用简介
查看>>
jquery validation插件
查看>>