题目描述
给定一个由纯数字组成以字符串表示的数值,现要求字符串中的每个数字最多只能出现2次,超过的需要进行删除;
删除某个重复的数字后,其它数字相对位置保持不变。
如”34533″,数字3重复超过2次,需要删除其中一个3,删除第一个3后获得最大数值”4533″
请返回经过删除操作后的最大的数值,以字符串表示。
输入描述
第一行为一个纯数字组成的字符串,长度范围:[1,100000]
输出描述
输出经过删除操作后的最大的数值
用例
输入 | 34533 |
输出 | 4533 |
说明 | 无 |
输入 | 5445795045 |
输出 | 5479504 |
说明 | 无 |
题目解析
类似题,可以参考题解:
316. 去除重复字母 - 力扣(LeetCode)
代码思路
这道题的解题思路是用栈来存储数字序列,同时用两个哈希表来记录每个数字的使用情况。具体步骤如下:
-
遍历字符串,初始化未使用的数字和已使用的数字。
-
遍历字符串,对于每个数字:
a. 如果当前数字已经被使用了2次,那么就跳过。
b. 如果当前数字比栈顶元素大,并且栈顶元素还有剩余的未使用的数字,那么就弹出栈顶元素。
c. 将当前数字添加到栈中。
-
将栈中的数字转换为字符串,输出最终的数字序列。