
LeetCode字符串簡單題13羅馬數(shù)字轉(zhuǎn)整數(shù)思路根據(jù)ds本題用字典才是最簡單最快的方法但是由于本人還沒學字典的用法所以第一反應是用笨拙的逐字循環(huán)讀取根據(jù)已知條件計算求和。問題和方案1.for循環(huán)不熟悉for i in rangestartstopstepstop和step寫反了導致所有羅馬數(shù)字只讀取第一個數(shù)。2.for i in range因為兩個羅馬數(shù)字組合在一起可能有特殊的計算方式所以我原本希望遇到這種特殊情況用一個elif分支單獨判斷完成后修改i的值跳過已經(jīng)被考慮過的下一個數(shù)但是由于range方法的特性在實際執(zhí)行過程中不管循環(huán)體內(nèi)對i做了什么操作執(zhí)行下一次循環(huán)的時候還是執(zhí)行i1操作導致計算結(jié)果和預期不同。所以這里我把for循環(huán)改成了while循環(huán) while i lens手動操作i的值規(guī)避這個問題。3.如果一定要用for循環(huán)呢我們可以再定義一個布爾變量用來標記在處理該數(shù)字的時候下一個數(shù)字需不需要跳過例如如果該變量的值為TRUE則直接continue直接回到for循環(huán)讓for循環(huán)自動將i1實現(xiàn)跳過。總結(jié)在遍歷的時候如果需要跳過元素while循環(huán)遠比for循環(huán)靈活兩個循環(huán)的時間復雜度都是On空間復雜度都是O1https://leetcode-cn.com/problems/roman-to-integer/