-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path13.Roman_To_Integer.py
54 lines (45 loc) · 1.67 KB
/
13.Roman_To_Integer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Roma numerals are represented by seven different symbols.
# Symbol Value
# I - 1
# V - 5
# X - 10
# L - 50
# C - 100
# D - 500
# M - 1000
# For examole, 2 is written as II in Roman numeral, just two ones added together. 12 is written as XII, which is simply X + II.
# The number 27 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 before V(5) and X(10) to make 4 and 9.
# X can be placed before L(50) and C(100) to make 40 and 90.
# C can be placed before D(500) and M(1000) to make 400 and 900.
# Give a roman numeral, convert it to an integer.
# Example 1:
# Input: s = "III"
# Output: 3
# Explanation : III = 3.
# Example 2:
# Input: s = "LVII"
# Output: 58
# Explanation: L = 50, V = 5, II = 3
# Example 3:
# Input: s = "MCMXCIV"
# Output: 1994
# Explanation: M = 1000, CM = 900, XC = 90 and IV = 4
# Solution:-
class Solution(object):
def romanToInt(self, s):
d = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
sum = 0
n = len(s)
i = 0
while i < n:
if i < n-1 and d[s[i]] < d[s[i+1]]:
sum += d[s[i+1]] - d[s[i]]
i += 2
else:
sum += d[s[i]]
i += 1
return sum