Leetcode 13 罗马数字转整数

  • 将每个罗马字母对应的整数写成字典格式,将输入的罗马数字字符串转换成列表形式
  • 一开始想的是怎么将罗马字母的对应位置找出来,利用列表循环相加
  • 后来发现了规律,‘IV'和’I'+'V‘只相差2,以此类推,最后将得到的总和减去多少个x里面的2就好了

  

def Rome(x):
    dict={
        'I':1,
        'V':5,
        'X':10,
        'L':50,
        'C':100,
        'D':500,
        'M':1000
    }
    z=list(x)
    print(z)
    sum=0
    for i in z:
        sum=sum+dict[i]
    if 'IV' in x or 'IX'in x:
        num = x.count('IV')+x.count('IX')
        sum = sum - num * 2
    if 'XL' in x or 'XC'in x:
        num=x.count('XL')+x.count('XC')
        sum=sum-num*20
    if 'CD' in x or 'CM'in x:
        num=x.count('CD')+x.count('CM')
        sum=sum-num*200
    return sum

 

posted @ 2018-06-18 20:54  Aprilnn  阅读(149)  评论(0编辑  收藏  举报