LeetCode----Roman To Integer

本博客介绍如何将给定的罗马数字字符串转换为其对应的十进制阿拉伯数,详细解析了罗马数字的表示规则,并提供了一段Python代码实现转换。

Roman to Integer

 

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

分析:

给定罗马字符串,输出该串对应的十进制阿拉伯数。

首先我们要了解罗马数字的表示规则。

从百科上我找到了:


理解规则1,2,3即可。

我的思路是,字典存储基本符号对应的阿拉伯数值,数组存储串中每个字符处理后的值,依次处理罗马串中的每一个字符,如果出现了前一个字符小于当前字符,且前一个字符为I、X或C时,将前一个字符的对应存储的值改为负数。


代码:

class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        r_keys = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
        single_values = [0] * 30  # store every time's value
        len_s = len(s)
        single_values[0] = r_keys[s[0]]
        for i in range(1, len_s):
            single_values[i] = r_keys[s[i]]
            if (single_values[i-1] < single_values[i]) and (s[i-1] in 'IXC'):
                single_values[i-1] = -single_values[i-1]
        return sum(single_values)

后记:

现在来写这道题觉得很简单,而六个月前,我去南大复试时机试就是编程实现这道题,当时没写出来,很囧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值