编程心得

95 篇文章 2 订阅

这道题有点意思(之二)

这道题有点意思(之一)
把程序再改进一下,感觉好多了。
解题思路:
分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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值