Python 中的羅馬數字轉整數
假設我們有一些羅馬文字,我們需要將其轉換為整數。眾所周知,羅馬數字用以下不同的符號表示:
| 數字 | 值 |
|---|---|
| I | 1 |
| V | 5 |
| X | 10 |
| L | 50 |
| C | 100 |
| D | 500 |
| M | 1000 |
如果我們仔細觀察羅馬數字,例如數字 '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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP