Roman numerals are represented by seven different symbols: I
, V
, X
, L
, C
, D
and M
.
Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000
For example, two is written as II
in Roman numeral, just two one’s added together. Twelve is written as, XII
, which is simply X
+ II
. The number twenty seven is written as XXVII
, which is XX
+ V
+ II
.
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII
. Instead, the number four is written as IV
. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX
. There are six instances where subtraction is used:
I
can be placed beforeV
(5) andX
(10) to make 4 and 9.X
can be placed beforeL
(50) andC
(100) to make 40 and 90.C
can be placed beforeD
(500) andM
(1000) to make 400 and 900.
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
result = 0
flag =0
dict1 ={'M':1000,'D':500,'C':100,'L':50,'X':10,'V':5,'I':1}
dict2 ={'CM':900,'CD':400,'XC':90,'XL':40,'IX':9,'IV':4}
length = len(s)
for i in range(length-1):
if flag==1:
flag=0
continue
if s[i]+s[i+1] in dict2:
result +=dict2[s[i]+s[i+1]]
flag = 1
else:
result +=dict1[s[i]]
if flag==0:
result+=dict1[s[length-1]]
return result