每天一道leetecode:13、羅馬數字轉整數(medium)

有點崩啊,兄弟們,一天一道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'))

發佈了274 篇原創文章 · 獲贊 172 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章