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

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


สมมติว่าเรามีเลขโรมัน เราต้องแปลงเป็นตัวเลข ดังที่เราทราบดีว่าเลขโรมันแสดงด้วยสัญลักษณ์จากซ้ายไปขวาจากมากไปหาน้อย ข้อยกเว้นเพียงอย่างเดียวคือเมื่อแทนหนึ่งสัญลักษณ์ที่น้อยกว่า ความหมายสัญลักษณ์ตัวเลขโรมันบางส่วนมีดังนี้:

  • 'ม':1,000

  • 'D':500

  • 'C':100

  • 'L':50

  • 'X':10

  • 'วี':5

  • 'ฉัน':1

ดังนั้น หากอินพุตเป็นตัวเลข ="MCLXVI" เอาต์พุตจะเป็น 1166 เนื่องจาก M =1000, C =100 รวมเป็น 1100 ดังนั้น L =50, X =10, VI =6 ดังนั้นผลรวมคือ 1166

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:

นำรายการตัวเลขตามที่กล่าวไว้ข้างต้น

  • ตอบ :=0

  • n :=ขนาดของตัวเลข

  • สำหรับแต่ละดัชนี idx และค่า c ตัวเลข ทำ

    • ถ้า idx

      • ans :=ans - d[c]

    • มิฉะนั้น

      • ans :=ans + d[c]

  • กลับมาอีกครั้ง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:

ตัวอย่าง

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