Roman to Integer [LeetCode/Python3/Easy]
題目
羅馬數字由七個不同的符號表示: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
。
羅馬數字通常從左到右按從大到小的順序書寫。但是,數字四的符號不是IIII
。相反,數字四寫為IV
。因為1在5之前,所以減去它使其成為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:
輸入:s = "III"
輸出:3
解釋:III = 3。
範例2:
輸入:s = "LVIII"
輸出:58
解釋:L = 50,V= 5,III = 3。
範例3:
輸入:s = "MCMXCIV"
輸出:1994
解釋:M = 1000,CM = 900,XC = 90和IV = 4。
限制:
1 <= s.length <= 15
s
只包含字符('I', 'V', 'X', 'L', 'C', 'D', 'M')
。- 保證
s
是[1, 3999]
範圍內的有效羅馬數字。
我的答案
class Solution:
def romanToInt(self, s: str) -> int:
Symbol={'I':1,
'V':5,
'X':10,
'L':50,
'C':100,
'D':500,
'M':1000
}
s_n=''
num=0
for char in s:
s_n=s_n+char
if len(s_n) == 2:
if Symbol[s_n[0]]<Symbol[s_n[1]] and s_n[0] in ['I', 'X', 'C']:
num+=Symbol[s_n[1]]-Symbol[s_n[0]]
s_n=''
else:
num+=Symbol[s_n[0]]
s_n=s_n[1]
if s_n:
num+=Symbol[s_n]
return num
留言
張貼留言