洛谷 P1106 删数问题 python解析

P1106 删数问题

时间:2023.10.9
题目地址:删数问题

题目分析

要想去掉k个数后,最小,那么就要将小的数尽可能的往前放,就相邻的两个进行比较小的往前放,大的删了就行了。
它去掉k个数后是按原顺序来进行合并,那么遍历就得从左往右来进行比较。
注意:① 越界; ② ‘00123’ == ‘123’,头部为零的问题。
1

代码

s = input()
k = int(input())

li = list(s) + ['0']  # 加个零是防止越界的同时来进行比较
n = len(li)
while k > 0:  # 删k个数,k趟。
    for i in range(0, n):
        if li[i] > li[i+1]:
            li.pop(i)  # 删掉一个
            n -= 1
            break
    k -= 1
    
print(int(''.join(li)[:-1])) # int()的目的是去头部0,[:-1]去掉添加的0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值