字元 數值
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
。
通常情況下,羅馬數字中小的數字在打的數字的右邊。但是也存在特例,例如4
不寫做iiii
,而是iv
。數字1
在數字5
的左邊,所表示的數等於大數5
減小數1
得到的數值4
.同樣的,數字9
表示為ix
。這個特殊的規則只適用於以下六種情況:
給定乙個羅馬數字,將其轉換成整數。輸入確保在1到3999的範圍內。
示例1:
輸入:「iii」
輸出:3
示例2:
輸入:「iv」
輸出:4
示例3:
輸入:「ix」
輸出:9
示例4:
輸入:「lviii」
輸出:58
解析:l = 50, v= 5, iii = 3.
示例5:
輸入:「mcmxciv」
輸出:1994
解析:m = 1000, cm = 900, xc = 90,iv = 4.
演算法設計與分析:
使用python3對方法一進行描述:
class
solution
:def
romantoint
(self, s:
str)
->
int:
dic =
result =
0for idx, ch in
enumerate
(s):
value =
0if dic[ch]
isnot
none
: value = dic[ch]
if idx +
1<
len(s)
: nextch = s[idx +1]
nextvalue = dic[nextch]
if nextvalue is
notnone
and nextvalue > value:
value = value *-1
result += value
return result
class
solution
:def
romantoint
(self, s:
str)
->
int:
dict
= num =
0 numlist =
if"cm"
900)
;s = s.replace(
"cm"
,"900")if
"cd"
400)
;s = s.replace(
"cd"
,"400")if
"xc"90)
;s = s.replace(
"xc"
,"90")if
"xl"40)
;s = s.replace(
"xl"
,"40")if
"ix"9)
;s = s.replace(
"ix"
,"9")if
"iv"4)
;s = s.replace(
"iv"
,"4"
)for i in s:
# 如果該數對應的在字典裡面的時候才加的,否則不加,題目已經給出了範圍
ifdict
.get(
"%s"
%i):
dict
.get(
"%s"
%i))
for i in numlist:
num += i
return num
13 羅馬數字轉整數
羅馬數字包含以下七種字元 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。通常情況下,羅馬數字中小的數字在大的數...
13 羅馬數字轉整數
羅馬數字包含以下七種字元 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。通常情況下,羅馬數字中小的數字在大的數字...
13 羅馬數字轉整數
羅馬數字包含以下七種字元 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 通常情況下,羅馬數字中...