擅长:python、mysql、java
<p>最后,它只是一个数字的加法,你只需要弄清楚它们是否需要被解释为正数或负数:</p>
<pre><code>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}
def roman2Dec(inp):
inpNum = [roman[x] for x in inp]
return sum([-x if i < len(inpNum)-1 and x < inpNum[i+1] else x for i, x in enumerate(inpNum)])
for nums in [('IX', 9), ('XL', 40), ('LXI', 61), ('MMMCMXCIX', 3999)]:
result = roman2Dec(nums[0])
print result == nums[1]
</code></pre>
<p>输出:</p>
<pre><code>True
True
True
True
</code></pre>