求最大数字
题目
给定一个由纯数字组成以字符串表示的数值,现要求字符串中的每个数字最多只能出现 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)
标签:count,ch,数字,python,od,char,result,input
From: https://www.cnblogs.com/domm/p/18004877