华为OD机试真题:求最大数字
题目
给定一个由纯数字组成以字符串表示的数值,现要求字符串中的每个数字最多只能出现 2
次,超过的需要进行删除;删除某个重复的数字后,其它数字相对位置保持不变。
如 34533
,数字 3
重复超过 2
次,需要删除其中一个 3
,删除第一个 3
后获得最大数值 4533
请返回经过删除操作后的最大的数值,以字符串表示。
输入
第一行为一个纯数字组成的字符串,长度范围:[1,100000]
输出
输出经过删除操作后的最大的数值
示例一
输入
34533
输出
4533
示例二
输入
5445795045
输出
5479504
示例三
输入
5554
输出
554
思路
- 统计所有字符出现的次数
- 次数大于 2 的数字,从前往后找到当前数字的后一个数字大于当前数字的位置,将其删除
- 如果到最后一个,还有剩余,则删除最后一个数字
解题思路
将输入的字符串中的数字进行处理,生成一个新的列表,其中按照一定的规则进行筛选和排序。
Python 代码实现
def solve_method():
input_str