笔试-最大数值字符串

应用

一个由纯数字组成、可表示数值的字符串。现要求每个字符最多只能出现2次,超过的需要进行删除,删除某个重复数字后,其他数字相对位置保持不变。请返回经过删除操作后的最大数值的字符串。如“34533”,需要删除第一个3,最大数值“4533”。

实现

str = input("请输入纯数字字符串:")

repeat = set()
for i in range(0, len(str)):
    same = 0

    for j in range(0, len(str)):
        if i != j and str[i] == str[j]:
                same = same + 1
    
    if same != 0:
        r = (str[i], same+1)
    else:
        r = (str[i], same)
    repeat.add(r)
# print(repeat)

R = [i for i in repeat]
# print(R)

delete = []
for i in range(0, len(R)):
    if R[i][-1] > 2:
        n = R[i][0]
        delete.append(n)
# print(delete)

index = []
for i in delete:
     for j in range(0, len(str)):
          if i == str[j]:
               r = [i, j]
               index.append(r)
# print(index)

arrange = []
for i in delete:
     arrange.append([i])
# print(arrange)

for i in index:
    for j in arrange:
        if i[0] ==  j[0]:
            j.append(i[1])
# print(arrange)

possible = []
for j in range(0, len(arrange)):
    for k in range(1, len(arrange[j])):
        i = arrange[j][k]
        # print(i)

        s = ""
        for l in range(0, len(str)):
            if l != i:
                s = s + str[l]
        
        possible.append(s)
# print(possible)

for i in possible:
    int(i)
possible.sort()

result =""
for i in possible[-1]:
    result = result + i
print(result)
请输入纯数字字符串:34533
4533

请输入纯数字字符串:345330442
45330442

你可能感兴趣的:(算法与数据结构,python)