知识点:字符串,特殊规则排序
题目描述
存在n个正整数,设计一个算法,按照一定顺序将这n个数排列起来,使得连接起来的数最大,输出这个排列,请注意效率。例如,存在三个正整数(52,5,58),最优的排列为(58,5,52)其形成的正整数58552比其他排列都大。
input
多组输入,每组为一行,数字之间用逗号隔开。
output
输出多行,每行对应相应的输入。
sample input
544,54,5,5652,5,58
45,455
12,11
10,9,1
37,376
87,3
455,54,4,5
53,535
35,353
535,5355
5354,53545
75,7576
sample output
56,5,54,54458,5,52
455,45
12,11
9,1,10
376,37
87,3
5,54,455,4
535,53
35,353
5355,535
53545,5354
7576,75
思路
类似字典序排序,自定义如下比较规则:
1.两个数的位数
一样(即当做字符串对待的话长度一样),直接比,大的放前面。
2.两个数的位数
不一样,例a与b,a的位数较少。将a补上b的前n位数字,记为A,此时A的位数与b位数相等。再比较
A与b,若A大,将a排在b前面。
3.若经过第2步后A与b仍相等。比较x(x为
a的最高位数字)与y(y为
a中首个与a的最高位不同的数字),若x小于y,a排在b前面。
code-1
尚不知道标准答案,自己写的代码应该没问题。