一组正整数每个数字不能拆分,组成一个最大的数,不考虑超出整数范围。 ... 比如: 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)