1. 程式人生 > 其它 >Python3_Leetcode #13 羅馬數字轉整數題解

Python3_Leetcode #13 羅馬數字轉整數題解

思路:

  當小的羅馬數字放在大的羅馬數字左邊時,可相當於做減法,因為不會出現亂放的現象(即輸入遵循羅馬數字規則)所以可以直接判斷後一位來決定做不做減法。

將代表的羅馬數字與數字放入一個字典

1. 迴圈取出字元,判斷當前位和後一位所代表數字的大小關係,迴圈長度為原長度-1,因為最後一位找不到後一位

2.如果當前位較大,則直接加當前位代表的數字

3.如果當前位較小,則直接減當前位代表的數字

4. 結果加上最後一位所代表的數字,則為所得

字元 數值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000

I可以放在V(5) 和X(10) 的左邊,來表示 4 和 9。
X可以放在L(50) 和C(100) 的左邊,來表示 40 和90。
C可以放在D(500) 和M(1000) 的左邊,來表示400 和900

classSolution: defromanToInt(self,s:str)->int: condition={ 'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000 } result=0 foriinrange(len(s)-1): ifcondition[s[i]]<condition[s[i+1]]: result-=condition[s[i]] else: result+=condition[s[i]]

result+=condition[s[-1]] #這一步不要漏
returnresult