P1106 删数问题
时间:2023.10.9
题目地址:删数问题
题目分析
要想去掉k个数后,最小,那么就要将小的数尽可能的往前放,就相邻的两个进行比较小的往前放,大的删了就行了。
它去掉k个数后是按原顺序来进行合并,那么遍历就得从左往右来进行比较。
注意:① 越界; ② ‘00123’ == ‘123’,头部为零的问题。
代码
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