羅馬數字轉換成十進位制

IT資訊教室發表於2020-11-11

Convert Roman Numerals to Decimal

羅馬數字轉換成十進位制

問題描述
以字串的形式給定一個羅馬數字,將其轉化為十進位制的數值。羅馬數字都是基於下面這些基本符號:

I 1
IV 4
V 5
IX 9
X 10
XL 40
L 50
XC 90
C 100
CD 400
D 500
CM 900
M 1000

羅馬數字的規則如下:
1.) 在 V 或者 X 前面的 I 表示減一,例如 4 = IV,9 = IX
2.) 放在 L 或者 C 前面的 X 表示減十,例如 40 = XL,90 = XC
3.) 放在 D 或者 M 前面的 C 表示減100,例如 400 = CD,900 = CM

測試樣例

# Input: 
'MCMIV'
# Output:
1904
#  5-1+1000-100+1000

內容首發於微信公眾號IT資訊教室,如果您想學習更多AI相關的技能,歡迎搜尋關注或微信掃描下方二維碼關注~~

在這裡插入圖片描述

參考程式碼

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# O(n) time, O(1) space. 
class Solution:
    def romanToInt(self, romanString):
        romanNumerals = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
        
        previous = 0
        total = 0
        for char in romanString[::-1]:
            current = romanNumerals[char]
            if current >= previous:
                total += current
            else:
                total -= current
            
            previous = current
        return total

# Test Program
romanString = 'MCMIV'
print(Solution().romanToInt(romanString))
# 1904

相關文章