• 保留最大的数


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

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

  • 相关阅读:
    张季跃 201771010139《面向对象程序设计(java)》第三周学习总结
    实验十二
    201771010142 张燕& 杨蓉庆 实验十一 集合
    实验十 泛型程序设计技术
    第九次实验
    第八次实验
    进度条
    实验七 继承附加实验
    第六次实验
    实验四
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9759803.html
Copyright © 2020-2023  润新知