求最大数字-od-python

求最大数字

题目

给定一个由纯数字组成以字符串表示的数值,现要求字符串中的每个数字最多只能出现 2 次,超过的需要进行删除;删除某个重复的数字后,其它数字相对位置保持不变。

如 34533,数字 3 重复超过 2 次,需要删除其中一个 3 ,删除第一个 3 后获得最大数值 4533

请返回经过删除操作后的最大的数值,以字符串表示。

输入

第一行为一个纯数字组成的字符串,长度范围:[1,100000]

输出

输出经过删除操作后的最大的数值

示例一

输入

34533

1

输出

4533

1

示例二

输入

5445795045

1

输出

5479504

1

def process_input(input_str):
    LIMIT_SIZE = 2
    count_map = {}
    result = []

    for char in input_str:
        count = count_map.get(char, 0) #首次出现的话为0
        print(count_map)
        print(result)
        if count < LIMIT_SIZE:
            count_map[char] = count + 1 # 记录出现的个数
            result.append(char)  # <2的话,添加到数组 result
        else:
            for i in range(len(result) - 1): # 因为要获取下一个字符,所以-1,不然会数组越界
                curr_ch = result[i]  #当前字符
                next_ch = result[i + 1] # 下一个
                if curr_ch == char and curr_ch < next_ch:
                    # result记录的字符和当前字符相等,并且这个字符比下一个的小,
                    # 说明需要删除掉 result的,因为要取大的数字 。同时把当前字符添加到result的最后,跳出循环
                    result.pop(i)
                    result.append(char)
                    break

    return ''.join(result)
#

# 输入处理
while True:
    input_str = input()
    if not input_str:
        break

    # 输出结果
    result = process_input(input_str)
    print(result)

posted on 2024-02-03 16:05  nomorecloudays  阅读(54)  评论(0)    收藏  举报

导航