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