python 去掉重复数后,使剩下的数值最大
描述:
一个长整型数字,消除重复的数字后,得到最大的一个数字。
如12341 ,消除重复的1,可得到1234或2341,取最大值2341.
42234,消除4 得到4223 或者 2234 ,再消除2,得到423或234,取最大值423
def getMax(get_lsit, numLen):
resultNum = []
new_len = numLen
left_list = []
for x in get_lsit:
left_list.append(x)
for a in range(len(get_lsit)):
count_num = left_list.count(left_list[0])
if left_list[0] == left_list[1]:
del left_list[0]
if len(resultNum) == numLen:
break
else:
if count_num == 1 and left_list[0] not in resultNum:
resultNum.append(get_lsit[a])
del left_list[0]
new_len = new_len - 1
elif count_num > 1:
if new_len == 1 or (len(left_list)-1 == new_len and len(resultNum) != 0):
if left_list[0] > left_list[1]:
for last_num2 in left_list:
if last_num2 not in resultNum:
resultNum.append(last_num2)
break
else:
del left_list[0]
for last_num3 in left_list:
if last_num3 not in resultNum:
resultNum.append(last_num3)
break
else:
new_list = []
for b in range(new_len):
new_list.append(left_list[b])
new_list.sort(reverse=True)
if new_list[0] == left_list[0]:
if new_list[0] in resultNum:
continue
else:
resultNum.append(new_list[0])
new_len = new_len - 1
del left_list[0]
else:
del left_list[0]
return resultNum
while True:
try:
inputStr = str(input())
str_list = list(inputStr)
# 获取最终结果位数
restLen = len(set(str_list))
last_list = getMax(str_list, restLen)
print(''.join(getMax(str_list, restLen)))
except:
break