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)后记:
现在来写这道题觉得很简单,而六个月前,我去南大复试时机试就是编程实现这道题,当时没写出来,很囧。

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

被折叠的 条评论
为什么被折叠?



