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型數字能夠表達的範圍,從而導致數字溢出。我們可以用字符串表示數字,這樣就能簡捷的解決大數問題。