有點崩啊,兄弟們,一天一道leetecode不太現實啊,哭哭。
其實還是找藉口,哈哈,堅持不下來也是一個問題。。。
剛剛把論文的中文版本定好了,準備明天交給老師審查一下。
言歸正傳,這個題仍然很簡單,沒有什麼好說的,一個一個寫出來就OK了。
話說開始的時候我還耍小聰明,想直接用12題,然後遍歷一個大數找到返回,哈哈,果不其然,超時了。。。
對了,通過這道題學到了一個重點!!!!就是python裏面的for循環的i,不能根據內部的變化而變化。
比如:
for i in range(5):
i = i + 2
print(i)
輸出:2、3、4、5、6.
所以,如果想在循環裏更改i,那麼只能用while來實現了!!!
完整代碼:
'''
1、4、5、9、 I、IV、V、IX
10、40、50、90、X、XL、L、XC
100、400、500、900、1000 C、CD、D、CM、M、
'''
def romanToInt(s):
sum = 0
i = 0
while i < len(s)-1:
if s[i] == 'C' and s[i+1] == 'M':
sum += 900
i = i + 2
elif s[i] == 'C' and s[i+1] == 'D':
sum += 400
i = i + 2
elif s[i] == 'X' and s[i+1] == 'C':
sum += 90
i = i + 2
elif s[i] == 'X' and s[i+1] == 'L':
sum += 40
i = i + 2
elif s[i] == 'I' and s[i+1] == 'X':
sum += 9
i = i + 2
elif s[i] == 'I' and s[i+1] == 'V':
sum += 4
i = i + 2
elif s[i] == 'M':
sum += 1000
i += 1
elif s[i] == 'D':
sum += 500
i += 1
elif s[i] == 'C':
sum += 100
i += 1
elif s[i] == 'L':
sum += 50
i += 1
elif s[i] == 'X':
sum += 10
i += 1
elif s[i] == 'V':
sum += 5
i += 1
elif s[i] == 'I':
sum += 1
i += 1
if i == len(s):
return sum
elif i == len(s) - 1:
if s[i] == 'M':
sum += 1000
elif s[i] == 'D':
sum += 500
elif s[i] == 'C':
sum += 100
elif s[i] == 'L':
sum += 50
elif s[i] == 'X':
sum += 10
elif s[i] == 'V':
sum += 5
elif s[i] == 'I':
sum += 1
return sum
print(romanToInt('III'))
print(romanToInt('IV'))
print(romanToInt('IX'))
print(romanToInt('LVIII'))
print(romanToInt('MCMXCIV'))
print(romanToInt('V'))