Python 中的羅馬數字轉整數


假設我們有一些羅馬文字,我們需要將其轉換為整數。眾所周知,羅馬數字用以下不同的符號表示:

數字
I1
V5
X10
L50
C100
D500
M1000

如果我們仔細觀察羅馬數字,例如數字 'II',它表示 2,有兩個 'I' 相加。對於 XII,它是 12,實際上是 X + II = 10 + 2 = 12。羅馬數字 4 不是 IIII,而是 IV。這有點棘手。

  • I 可以用在 V(5)和 X(10)之前,分別表示 4 和 9

  • X 可以用在 L(50)和 C(100)之前,分別表示 40 和 90

  • C 可以用在 D(500)和 M(1000)之前,分別表示 400 和 900。

在這種情況下,我們將建立一個羅馬數字轉整數的轉換器,可以轉換 1 到 3999 之間的數字。

為了解決這個問題,我們將建立一些可能的數字及其值,以及一些特殊值,如 4、9、40、90、400、900。現在掃描給定的字串,如果表中存在某個子字串,則將其值新增到結果中,然後檢查下一個,對於下一個匹配項,它將值與結果相加,最終形成數字。

讓我們看看實現來更好地理解

示例(Python)

 線上演示

class Solution(object):
   def romanToInt(self, s):
      """
      :type s: str
      :rtype: int
      """
      roman = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,'IV':4,'IX':9,'XL':40,'XC':90,'CD':400,'CM':900}
      i = 0
      num = 0
      while i < len(s):
         if i+1<len(s) and s[i:i+2] in roman:
            num+=roman[s[i:i+2]]
            i+=2
         else:
            #print(i)
            num+=roman[s[i]]
            i+=1
      return num
ob1 = Solution()
print(ob1.romanToInt("III"))
print(ob1.romanToInt("CDXLIII"))

輸入

"III"
"CDXLIII"

輸出

3
443

更新於: 2023年9月14日

33K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.