保留最大的数

题目描述
给定一个十进制的正整数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))

只需要扫描一遍,删除数字之和回退一位就可以了,减少了时间复杂度。

posted @ 2018-10-27 13:25  bernieloveslife  阅读(214)  评论(0编辑  收藏  举报