题目描述
给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
输入描述:
输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。
输出描述:
输出保留下来的结果。
示例1
输入
325 1
输出
35
Solution1:(TLE)
number = input()
cnt = int(input())
if cnt==len(number):
print('0')
else:
while cnt>0:
flag = False
cnt -= 1
for i in range(len(number)-1):
if int(number[i])<int(number[i+1]):
number = number[:i] + number[i+1:]
flag = True
break
if not flag:
number = number[:len(number)-1]
print(number)
Solution2:
number = list(input())
cnt = int(input())
if cnt==len(number):
print('0')
else:
i = 0
l = len(number)
while cnt>0 and i<l-1:
if number[i]>=number[i+1]:
i += 1
continue
number.pop(i)
cnt -= 1
l -= 1
i = i-1 if i>0 else 0
while cnt>0:
cnt -= 1
number.pop()
print(''.join(number))
只需要扫描一遍,删除数字之和回退一位就可以了,减少了时间复杂度。