从Python转换为整数

假设我们有罗马文字;我们必须将它们转换为整数。众所周知,罗马数字用一些不同的符号表示,如下所示-

数字
I
1
V5
X10
L
50
C100
D
500
M
1000

如果我们仔细地看罗马数字,就好比假设数字是“ II”,所以它是2,有两个“ I”加在一起。对于XII,它是12,因此实际上是X + II = 10 + 2 =12。4的罗马数字不是IIII,而是IV。这有点棘手。

  • 我可以在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。现在扫描给定的字符串,如果表中存在某些子字符串,则将其值放入结果,然后检查下一个,对于下一个匹配项,它将值与结果相加,最后形成数字。

让我们看一下实现以获得更好的理解

范例(Python)

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