13 羅馬數字轉整數 LeetCode

2021-09-25 06:03:59 字數 2507 閱讀 3249

字元				數值

i 1

v 5

x 10

l 50

c 100

d 500

m 1000

例如,羅馬數字2寫做ii,即為兩個並列的112寫做xii,即為x + ii27寫做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 通常情況下,羅馬數字中...