Python题解
class Solution:
def PrintMinNumber(self, numbers):
def helper(a, b):
A = str(a)+str(b)
B = str(b)+str(a)
if A>B:return 1
elif A<B:return -1
else:return 0
res = ""
numbers = sorted(numbers, cmp=lambda x, y:helper(x, y))
for n in numbers:
res += str(n)
return res
考点
- 本题有两个难点;第一个难点是想出一种新的比较规则来排序一个数组;第二个难点是证明这个比较规则是有效的,并且证明根据这个规则排序之后,把数组中所有数字拼接起来得到的数字是最小的。要想解决这两个难点,要求应聘者有很强的数学功底和逻辑思维能力;
- 考查解决大数问题的能力。两个int型的整数拼接起来得到的数字可能会超出int型数字能够表达的范围,从而导致数字溢出。我们可以用字符串表示数字,这样就能简捷的解决大数问题。