Python程序将罗马数字转换为整数

Python程序将罗马数字转换为整数

在本教程中,我们将编写Python程序将罗马数字转换为整数。这是一个经常被科技巨头亚马逊和Facebook在面试中提问的问题。让我们来看一下问题说明和解决方案的实现。

问题说明

给定一个罗马数字字符串,任务是将其转换为对应的整数值。以下是参考符号:

Symbols Values
I 1
IV 4
V 5
IX 9
X 10
XL 40
L 50
XC 90
C 100
CD 400
D 500
CM 900
M 1000

示例1:

输入: s = VI

输出: 6

示例2:

输入: X 输出: 10XL是一个代表40的罗马符号

解决方案方法

算法

  1. 首先将罗马数字字符串分割为罗马符号。
  2. 我们现在可以分隔符将罗马数字的每个符号转换为它所代表的值。
  3. 从索引0开始选择一个值。
  • 如果当前符号的值大于或等于下一个符号,那么将该值添加到返回的总和中。
  • 否则,通过将下一个符号的值添加到运行总和中来减去该值。

让我们将算法实现到Python程序中。

程序

def rom_value(r):
    if (r == 'I'):
        return 1
    if (r == 'V'):
        return 5
    if (r == 'X'):
        return 10
    if (r == 'L'):
        return 50
    if (r == 'C'):
        return 100
    if (r == 'D'):
        return 500
    if (r == 'M'):
        return 1000
    return -1
def romanToDecimal(str):
    res = 0
    i = 0

    while (i < len(str)):


        n1 = rom_value(str[i])

        if (i + 1 < len(str)):


            n2 = rom_value(str[i + 1])

            # Comparing both rom_values
            if (n1 >= n2):

                res = res + str1
                i = i + 1
            else:

                # rom_value of current symbol is greater
                # or equal to the next symbol
                res = res + str2 - str1
                i = i + 2
        else:
            res = res + str1
            i = i + 1

    return res

print(romanToDecimal("VII"))

输出:

7

解释

在上面的代码中,我们定义了一个 rom_value() 函数,它返回对应的符号。接下来,我们定义了 romanTointeger() 方法,它将罗马数字转换为整数。在 romanToInteger() 方法中,

  • 我们将res和i变量都设为0。
  • while循环进行迭代,直到i小于字符串的长度。
  • 我们将第一个字符转换成一个整数并存储在 n1 中。然后,使用条件检查第i+1个元素是否小于字符串的长度。
  • 如果条件返回true,就将其转换成一个整数并存储在 n2 中。
  • 比较n1和n2;如果n1大于n2,则将其添加到res中,并将i的值增加1。
  • 如果条件返回false,则将n2从n1中减去,并将i增加2。
  • 如果第一个if条件返回false,则将其添加到res中,并将i增加。

复杂性分析

时间复杂度: O(n),其中n是字符串的长度。只需要对字符串进行一次遍历。

空间复杂度: O(1)。不需要额外的空间。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程