一组正整数每个数字不能拆分,组成一个最大的数,不考虑超出整数范围。 ... 比如: 65,87,343,45,21,55 这组数字组成的最大数应该是87 65 55 45 343 21,即8765554534321
解题技巧是用最长数字的第一个字符,把不足最长长度的数字补成最长数字的长度。对上例来说,就是按343的长度3,把其他数字补全,例如65补全为653.
python代码为:
def create_max_num(nums):
maxlen = 0
addchar = ''
for x in nums:
x = str(x)
if maxlen<len(x):
maxlen = len(x)
addchar = x[0]
numslst = []
for x in nums:
numspair = []
numspair.append(x)
if len(str(x))<maxlen:
newnum = str(x) + addchar*(maxlen-len(str(x)))
numspair.append(int(newnum))
else:
numspair.append(x)
numslst.append(numspair)
numslst.sort(key=lambda x:x[1], reverse=True)
for x in numslst:
print x[0],
if __name__ == '__main__':
srcnums = [65,87,343,45,21,55]
create_max_num(srcnums)