Python 罗马数字转整数

Python 罗马数字转整数

假设我们有罗马数字文字;我们需要将它们转换为整数。正如我们所知,罗马数字以一些不同的符号表示,如下所示 –

Numeral Value
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。现在扫描给定的字符串,如果某个子字符串存在于表中,那么将其值添加到结果中,然后检查下一个,如果匹配,则将值与结果相加,最后形成数字。

让我们看一下实现代码,以便更好地理解。

示例

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程