leetcode

要开始复习算法,在leetcoe上面刷中等难度的算法题

罗马数字

python3

# 先把特殊数字和罗马数字按顺序存在数组中,这样就不用单独判断特殊情况
sum = [
    {
        'zifu': 'I',
        'number': 1
    },{
        'zifu': 'IV',
        'number': 4
    },{
        'zifu': 'V',
        'number': 5
    },{
        'zifu': 'IX',
        'number': 9
    },{
        'zifu': 'X',
        'number': 10
    },{
        'zifu': 'XL',
        'number': 40
    },{
        'zifu': 'L',
        'number': 50
    },{
        'zifu': 'XC',
        'number': 90
    },{
        'zifu': 'C',
        'number': 100
    },{
        'zifu': 'CD',
        'number': 400
    },{
        'zifu': 'D',
        'number': 500
    },{
        'zifu': 'CM',
        'number': 900
    },{
        'zifu': 'M',
        'number': 1000
    }
]
num = int(input())

re = ['"']  #存储得到的结果

# 判断特殊情况
# if num == 4:
#     print('IV')
# elif num == 9:
#     print('IX')
# elif num ==40:
#     print('XL')
# elif num == 90:
#     print('XC')
# elif num == 400:
#     print('CD')
# elif num == 900:
#     print('CM')
# else:
while num > 0:
    for i in range(len(sum)):
        # print(i)
        if i < len(sum) - 1:
            if sum[i]['number'] <= num and sum[i + 1]['number'] > num:
                #  如果找到,那么就开始从0到i-1找,重复这个方法
                re.append(sum[i]['zifu'])
                num = num - sum[i]['number']
                break
        else:
            re.append(sum[i]['zifu'])
            num = num - sum[i]['number']
            break
# print('this is num:',num)
re.append('"')
print(''.join(re))  #将数组元素拼接成字符串

以为题目要求输出时两边要有引号,所以在初始化和最后的时候都append了一下",但在提交的时候是不需要的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值