Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมแปลงเลขโรมันเป็นจำนวนเต็มใน Python

สมมติว่าเรามีตัวเลขโรมัน ต้องแปลงเป็นจำนวนเต็ม กฎหลัก: สัญลักษณ์โรมันเขียนจากซ้ายไปขวา เรียงจากค่ามากไปน้อย ยกเว้นกรณีที่เขียนค่าน้อยกว่าหนึ่งหน่วย (เช่น 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

ขั้นตอนการแก้ปัญหา

  1. สร้าง dictionary d 映射สัญลักษณ์ไปยังค่า
  2. กำหนด ans = 0, n = len(numeral)
  3. วนลูปผ่านแต่ละตัวอักษรพร้อมดัชนี idx:
    • ถ้า idx < n-1 และ d[c] < d[numeral[idx+1]] ให้ลบ d[c] จาก ans (กรณีลบ)
    • มิฉะนั้น ให้บวก d[c] เข้า ans
  4. คืนค่า 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