python 去掉重复的数字后,使剩下的数字数值最大

python 去掉重复数后,使剩下的数值最大

描述:
一个长整型数字,消除重复的数字后,得到最大的一个数字。

如12341 ,消除重复的1,可得到1234或2341,取最大值2341.

42234,消除4 得到4223 或者 2234 ,再消除2,得到423或234,取最大值423

def getMax(get_lsit, numLen):
    resultNum = []
    new_len = numLen
    left_list = []

    for x in get_lsit:
        left_list.append(x)

    for a in range(len(get_lsit)):
        count_num = left_list.count(left_list[0])
        if left_list[0] == left_list[1]:
            del left_list[0]
        if len(resultNum) == numLen:
            break
        else:
            if count_num == 1 and left_list[0] not in resultNum:
                resultNum.append(get_lsit[a])
                del left_list[0]
                new_len = new_len - 1
            elif count_num > 1:
                if new_len == 1 or (len(left_list)-1 == new_len and len(resultNum) != 0):
                    if left_list[0] > left_list[1]:
                        for last_num2 in left_list:
                            if  last_num2 not in resultNum:
                                resultNum.append(last_num2)
                        break
                    else:
                        del left_list[0]
                        for last_num3 in left_list:
                            if last_num3 not in resultNum:
                                resultNum.append(last_num3)
                        break
                else:
                    new_list = []
                    for b in range(new_len):
                        new_list.append(left_list[b])
                    new_list.sort(reverse=True)
                    if new_list[0] == left_list[0]:
                        if new_list[0] in resultNum:
                            continue
                        else:
                            resultNum.append(new_list[0])
                            new_len = new_len - 1
                            del left_list[0]
                    else:
                        del left_list[0]
    return resultNum


while True:
    try:
        inputStr = str(input())
        str_list = list(inputStr)
        # 获取最终结果位数
        restLen = len(set(str_list))
        last_list = getMax(str_list, restLen)
        print(''.join(getMax(str_list, restLen)))
    except:
        break
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值