网站开发与设计课程设计,荆门刚刚发布的,wordpress全局jquery,杭州企业网站制作哪家好问题描述
有n个非负整数#xff0c;将其按照字符串拼接的方式拼接为一个整数如何拼接可以使得得到的整数最大?
例: 32,94,128,1286,6,71可以拼接除的最大整数为 94716321286128。
问题思路
1.比较两个字符串的第一个数字#xff0c;数值大的在前面#xff0c;数值小的在…问题描述
有n个非负整数将其按照字符串拼接的方式拼接为一个整数如何拼接可以使得得到的整数最大?
例: 32,94,128,1286,6,71可以拼接除的最大整数为 94716321286128。
问题思路
1.比较两个字符串的第一个数字数值大的在前面数值小的在后面
2.当两个字符串长度差不多且其中一个是另一个的字串时从第一个数字开始比较两个字符串的方法就不太可行了。
3.更好的解决办法是比较两个字符串结合在一起后的字符串的大小比如“128” ”1286“ 1286 128,通过比较字符串拼接后的数值大小我们的算法也更容易实现。
代码实现
比较大小是调用python自带的包也可以自己写冒泡排序来进行排序。
from functools import cmp_to_key
li [32, 94, 128, 1286, 6, 71]def xy_cmp(x, y): # 定义两个字符串拼接后数值比较函数if xy yx:return 1 elif xy yx:return -1else:return 0def num_join(li): # 定义拼接函数li list(map(str, li)) # 通过map函数将列表中的数字都转换成字符串格式li.sort(keycmp_to_key(xy_cmp))return .join(li)print(num_join(li))家人们咱们就是说直接用冒泡排序排好序后连接字符串就可以了上面这个函数不常用也不太好理解直接冒泡排序实现超级简单
li [94, 65, 73, 128, 1286, 4]li list(map(str, li)) # 将列表中的数字转为字符串类型的for i in range(len(li) - 1): # 一整个就是冒泡排序的思想for j in range(len(li) - 1 - i):if li[j]li[j1] li[j1]li[j]: # 唯一不同是不是比较两个数字的大小# 而是比较两个数链接在一起后数值的大小li[j], li[j1] li[j1], li[j]print(.join(li)) # 最后将列表中的字符都拼接起来
一步一步的大踏步向前吧