首页 > 其他 > 详细

保留最大的数

时间:2018-10-27 14:22:20      阅读:122      评论:0      收藏:0      [点我收藏+]

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

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

保留最大的数

原文:https://www.cnblogs.com/bernieloveslife/p/9759803.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!