13. 羅馬數字轉整數
class solution(object):
def romantoint(self, s):
""":type s: str
:rtype: int
"""table =
number = 0
if len(s) <= 1:
return table[s]
for index, char in enumerate(s):
number += table[char]
if index != len(s)-1:
if char == 'i':
if s[index+1] == 'v' or s[index+1] == 'x':
number -= 2
if char == 'x':
if s[index+1] == 'l' or s[index+1] == 'c':
number -= 20
if char == 'c':
if s[index+1] == 'd' or s[index+1] == 'm':
number -= 200
return number
看的別人的解法,主要思路:
大的在小的左邊,則加
大的在小的右邊,則減
class solution(object):
def romantoint(self, s):
""":type s: str
:rtype: int
"""table =
number = 0
if len(s) <= 1:
return table[s]
for index in range(0, len(s)-1):
current_num = table[s[index]]
next_num = table[s[index+1]]
if current_num >= next_num:
number += current_num
else:
number -= current_num
number += table[s[-1]]
return number
其它解法:
把所有兩個字元組成的羅馬字代表的大小也列出來
把兩個字元組成的羅馬字都替換成單個的其他字元
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 通常情況下,羅馬數字中...