題目
思路
給出一串羅馬數(shù)字粘优,需要轉(zhuǎn)換成阿拉伯?dāng)?shù)字件缸,其中4,9,40,90,400,900的表達(dá)方式會(huì)特殊吻氧。
解決辦法:只需要將羅馬字符放入一個(gè)列表玄柠,從左到右(羅馬數(shù)字左大右小)讀取咱圆,遇到左小右大的情況笛辟,可以判定為上述特殊情況功氨,做減法即可。
因?yàn)橹恍枰x取一遍列表與構(gòu)建的字典{羅馬字符:阿拉伯?dāng)?shù)字}做匹配隘膘,所以疑故,
時(shí)間復(fù)雜度:O(n)
代碼實(shí)現(xiàn)
class Solution:
def romanToInt(self,rnum):
rnum = input("input:")
dic = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}
rnum = list(rnum)
s =0
if len(rnum) <1 or len(rnum)> 15:
return 0
for i in range(len(rnum)-1):
if dic[rnum[i]] < dic[rnum[i + 1]]:
s = s - dic[rnum[i]]
else:
s = s + dic[rnum[i]]
s = s + dic[rnum[i+1]]
return s