当前位置: 首页 > 面试经验 >

【华为OD机试2023】最大数字(Python)

优质
小牛编辑
183浏览
2023-03-28

【华为OD机试2023】最大数字(Python)

题目描述:

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

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

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

输入描述:

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

输出描述:

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

示例1

输入:

34533

输出:

4533

示例2

输入:

5445795045

输出:

5479504


shuzi=input()
daishanchu={}
for word in set(shuzi):
if shuzi.count(word)>2:
daishanchu[word]=shuzi.count(word)-2
else:
daishanchu[word]=0
stack=[]
for i in shuzi:
if stack.count(i)>=2:
continue
else:
while stack and stack[-1]<i and daishanchu[stack[-1]]>0:
daishanchu[stack[-1]]-=1
stack.pop()
stack.append(i)
print(''.join(stack))

 类似资料: