在這篇文章中,我們將深入剖析 LeetCode 題目 13. Roman to Integer 的解題方法。這是一道經典題目,要求我們將羅馬數字轉換為整數表示。通過學習這篇教學,你將掌握如何處理羅馬數字的規則和高效地實現轉換。
羅馬數字由以下符號組成:
規則
XV = 10 + 5 = 15
)。IV = 5 - 1 = 4
)。VI = 5 + 1 = 6
)。範例1:
Input: s = "III"
Output: 3
Explanation: 1 + 1 + 1 = 3
範例2:
Input: s = "LVIII"
Output: 58
Explanation: 50 + 5 + 3 = 58
範例3:
Input: s = "MCMXCIV"
Output: 1994
Explanation: 1000 + 900 + 90 + 4 = 1994
要將羅馬數字轉換為整數,我們需要遵循以下步驟:
class Solution:
def romanToInt(self, s: str) -> int:
# 定義羅馬數字的對應表
roman_to_int = {
'I': 1, 'V': 5, 'X': 10, 'L': 50,
'C': 100, 'D': 500, 'M': 1000
}
total = 0 # 總和
prev_value = 0 # 前一個字符的數值
# 從右向左遍歷字符串
for char in reversed(s):
current_value = roman_to_int[char]
# 判斷是否需要減法
if current_value < prev_value:
total -= current_value
else:
total += current_value
# 更新前一個字符的值
prev_value = current_value
return total
複雜度分析
n
為字符串長度。本題的解題關鍵在於:
希望這篇教學能幫助你掌握 Roman to Integer 的解法!