这道题有点意思(之二)
见这道题有点意思(之一)
把程序再改进一下,感觉好多了。
解题思路:
分4次(14-10)进行最大值筛选
千位数从列表的第1个元素(下标0)到第11(10+1)个元素(下标10)中进行筛选,确定最大元素值(顺位第一个)和下标,保存到另外一个列表中,打印比该下标小的元素值,并对原始列表从该下标元素至第1个元素的值全部改为-1
百位数从已获得的千位数下标的次一个下标元素到第12个元素中进行筛选,依次类推,最后打印保存的最大4位数
string_list = '92081346718538' #'12981346017338' # '69002011017023'
num_list = []
for i in string_list:
num_list.append(int(i))
print(num_list)
length = len(num_list)
i, n, result = 0, 10, []
start, end = 0, n + 1
while i < length-n:
x_list = num_list[start:end]
max_num = max(x_list)
max_ind = num_list.index(max_num)
result.append([max_ind, max_num])
for k in range(max_ind + 1):
num_list[k] = -1
start = max_ind + 1
end += 1
i += 1
print(result)
j = 0
for i in range(length):
if result[j][0] != i:
print(string_list[i], end=',')
else:
j += 1
for r in result:
print(r[1], end='')
D:\Python\study\venv\Scripts\python.exe D:/Python/study/test30.py
[9, 2, 0, 8, 1, 3, 4, 6, 7, 1, 8, 5, 3, 8]
[[0, 9], [3, 8], [10, 8], [13, 8]]
2,0,1,3,4,6,7,1,5,3,9888
Process finished with exit code 0