สมมติว่าเรามีตัวเลขโรมัน ต้องแปลงเป็นจำนวนเต็ม กฎหลัก: สัญลักษณ์โรมันเขียนจากซ้ายไปขวา เรียงจากค่ามากไปน้อย ยกเว้นกรณีที่เขียนค่าน้อยกว่าหนึ่งหน่วย (เช่น IV = 4, IX = 9)
ค่าของสัญลักษณ์โรมัน
- 'M': 1000
- 'D': 500
- 'C': 100
- 'L': 50
- 'X': 10
- 'V': 5
- 'I': 1
ตัวอย่าง
อินพุต: numeral = "MCLXVI"
เอาต์พุต: 1166
การคำนวณ: M=1000, C=100, L=50, X=10, V=5, I=1 รวม = 1166
ขั้นตอนการแก้ปัญหา
- สร้าง dictionary
d映射สัญลักษณ์ไปยังค่า - กำหนด
ans = 0,n = len(numeral) - วนลูปผ่านแต่ละตัวอักษรพร้อมดัชนี
idx:- ถ้า
idx < n-1และd[c] < d[numeral[idx+1]]ให้ลบd[c]จากans(กรณีลบ) - มิฉะนั้น ให้บวก
d[c]เข้าans
- ถ้า
- คืนค่า
ans
การนำไปใช้ใน Python
class Solution:
def solve(self, numeral):
d = {"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1}
ans = 0
n = len(numeral)
for idx, c in enumerate(numeral):
if idx < n - 1 and d[c] < d[numeral[idx + 1]]:
ans -= d[c]
else:
ans += d[c]
return ans
ob = Solution()
numeral = "MCLXVI"
print(ob.solve(numeral))
อินพุต
"MCLXVI"
เอาต์พุต
1166