Skip to content

Commit 8c1e627

Browse files
committed
transform roman to integer
1 parent c0882ef commit 8c1e627

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

romanToArab.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
2+
def RomanToArab(romanNumber):
3+
l = []
4+
d = {
5+
'I': 1,
6+
'V': 5,
7+
'X': 10,
8+
'L': 50,
9+
'C': 100,
10+
'D': 500,
11+
'M': 1000
12+
}
13+
for i in range(len(romanNumber)):
14+
l.append(d.get(romanNumber[i]))
15+
16+
def compute(start, end):
17+
if start >= end:
18+
return 0
19+
maximum = 0
20+
index = -1
21+
repeat = True
22+
for i in range(start, end):
23+
if i > start and repeat:
24+
if l[i] != l[start]:
25+
repeat = False
26+
if l[i] > maximum:
27+
maximum = l[i]
28+
index = i
29+
if repeat:
30+
return (end - start) * l[start]
31+
else:
32+
return maximum - compute(start, index) + compute(index + 1, end)
33+
34+
return compute(0, len(l))
35+
36+
37+
assert RomanToArab('I') == 1
38+
assert RomanToArab('III') == 3
39+
assert RomanToArab('VII') == 7
40+
assert RomanToArab('XCVIII') == 98
41+
assert RomanToArab('MDCCCLXXXVIII') == 1888
42+
assert RomanToArab('MDCCCXCIX') == 1899
43+
assert RomanToArab('MMMCMXCIX') == 3999

0 commit comments

Comments
 (0)