leetcode 13. Roman to Integer

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

 

Roman Numerals Chart

           

M=1000

   

D = 500

 
                     

I

1

 

XXXII

32

 

LXIII

63

 

XCIV

94

II

2

 

XXXIII

33

 

LXIV

64

 

XCV

95

III

3

 

XXXIV

34

 

LXV

65

 

XCVI

96

IV

4

 

XXXV

35

 

LXVI

66

 

XCVII

97

V

5

 

XXXVI

36

 

LXVII

67

 

XCVIII

98

VI

6

 

XXXVII

37

 

LXVIII

68

 

XCIX

99

VII

7

 

XXXVIII

38

 

LXIX

69

 

C

100

VIII

8

 

XXXIX

39

 

LXX

70

     

IX

9

 

XL

40

 

LXXI

71

 

EX.

 

X

10

 

XLI

41

 

LXXII

72

 

DI

501

XI

11

 

XLII

42

 

LXXIII

73

 

DL

550

XII

12

 

XLIII

43

 

LXXIV

74

 

DXXX

530

XIII

13

 

XLIV

44

 

LXXV

75

 

DCCVII

707

XIV

14

 

XLV

45

 

LXXVI

76

 

DCCCXC

890

XV

15

 

XLVI

46

 

LXXVII

77

 

MD

1500

XVI

16

 

XLVII

47

 

LXXVIII

78

 

MDCCC

1800

XVII

17

 

XLVIII

48

 

LXXIX

79

 

CM

900

XVIII

18

 

XLIX

49

 

LXXX

80

     

XIX

19

 

L

50

 

LXXXI

81

     

XX

20

 

LI

51

 

LXXXII

82

     

XXI

21

 

LII

52

 

LXXXIII

83

     

XXII

22

 

LIII

53

 

LXXXIV

84

     

XXIII

23

 

LIV

54

 

LXXXV

85

     

XXIV

24

 

LV

55

 

LXXXVI

86

     

XXV

25

 

LVI

56

 

LXXXVII

87

     

XXVI

26

 

LVII

57

 

LXXXVIII

88

     

XXVII

27

 

LVIII

58

 

LXXXIX

89

     

XXVIII

28

 

LIX

59

 

XC

90

     

XXIX

29

 

LX

60

 

XCI

91

     

XXX

30

 

LXI

61

 

XCII

92

     

XXXI

31

 

LXII

62

 

XCIII

93

     

其实看明白这个该死的表就可以求解了!

复制代码
class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        roman = {'M': 1000,'D': 500 ,'C': 100,'L': 50,'X': 10,'V': 5,'I': 1}
        nums = [roman[c] for c in s]
        ans = 0
        for i in xrange(0, len(s)-1):
            if nums[i] < nums[i+1]:
                ans -= nums[i]
            else:
                ans += nums[i]
        return ans + nums[-1]
        
复制代码

 

posted @   bonelee  阅读(337)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2017-03-27 Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析)——直接看例子就明白了!!!
2017-03-27 超线程技术——超线程技术让(P4)处理器增加5%的裸晶面积,就可以换来15%~30%的效能提升,本质单核模拟双核!和异步编程的思想无异。
2017-03-27 SQL数据分析概览——Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto+druid
点击右上角即可分享
微信分享提示