Roman to Integer(python)leetcode

wooyq4lh  于 2023-06-20  发布在  Python
关注(0)|答案(1)|浏览(107)

为问题编写了基本代码,但没有为所有测试用例Question给予正确答案
Question
我认为它不会通过第二组if函数
密码-

l=len(s)
    v=0
    a=-1
    vp=0
    while(a>=-l):
        v1=s[a]
        v2=0
        
        if v1=='I':
            v2=1
        elif v1=='V':
            v2=5
        elif v1=='X':
            v2=10
        elif v1=='L':
            v2=50
        elif v1=='C':
            v2=100
        elif v1=='D':
            v2=500
        elif v1=='M':
            v2==1000
        else:
            print("unknown")
        

        if v1=='I' and vp=='V' :
            v=v-v2
        elif v1=='I' and vp=='X' :
            v=v-v2
        elif (v1=='X')and(vp=='L'or vp=='C'):
            v=v-v2
        elif (v1=='C')and(vp=='D'or vp=='M'):
            v=v-v2
        else :
            v=v+v2
        a=a-1
        vp=v1

    return v
    print(v)`
s8vozzvw

s8vozzvw1#

简单的逻辑:

  • 对于每个值
  • 如果后面跟着相同或更小的值:ADD
  • 否则:减
from itertools imprt pairwise

values = {
    'I': 1,   'V': 5,
    'X': 10,  'L': 50,
    'C': 100, 'D': 500,
    'M': 1000,
}

vals = map(values.get, s+"I") # pad by min to give last value a "pair partner"
return sum((x, -x)[x<y] for x, y in pairwise(vals))

相关问题