编程心得

    技术2022-07-10  88

    关于一个优秀程序员半小时必须解决的5个问题(之二)

    编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。 说老实话,这个问题我一开始把把它想简单了,如果是[99123,98,78,9,992],怎么办?我现在都不能肯定下面的程序就是正解,看看吧,请多指教。

    def my_sort(seq): seq = list(map(str, seq)) # 先转换成字符串列表 seq = sorted(seq, reverse=True) # 对字符串列表进行排序 for j in range(len(seq) - 1): for k in range(j + 1, len(seq)): if seq[k] in seq[j]: # 如果列表中排在后面的字符串是排在前面字符串的子串, if seq[k] + seq[j] > seq[j] + seq[k]: # 这个判断不解释了,是关键所在 seq.insert(j, seq[k]) seq.pop(k + 1) print(seq) return seq if __name__ == '__main__': sequence = [10, 23, 45, 62, 19, 9, 8, 8, 7, 6, 629, 6, 98, 99799, 9, 7, 8, 98, 234, 78, 897, 1, 2, 101, 110, 11012, 996, 9971, 666, 6667, 6656] arr = my_sort(sequence) his = '' for i in arr: his += str(i) print(his)
    Processed: 0.057, SQL: 9