Chuyển số La Mã thành số nguyên. Bảng giá trị: I=1, V=5, X=10, L=50, C=100, D=500, M=1000. Quy tắc trừ: IV=4, IX=9, XL=40, XC=90, CD=400, CM=900. Chuyển đổi số 1-3999.
Giải pháp
Tạo dictionary bao gồm cả cặp trừ. Duyệt chuỗi: nếu 2 ký tự tiếp theo có trong dict → lấy giá trị, tăng i 2; else lấy 1 ký tự.
Ví dụ
Triển khai Python:
class Solution(object):
def romanToInt(self, s):
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:
num+=roman[s[i]]
i+=1
return num
ob1 = Solution()
print(ob1.romanToInt("III"))
print(ob1.romanToInt("CDXLIII")) Đầu vào
"III" "CDXLIII"
Đầu ra
3 443