輸入一個(gè)正整數(shù)數(shù)組夕凝,把數(shù)組里所有數(shù)字拼接起來排成一個(gè)數(shù),打印能拼接出的所有數(shù)字中最小的一個(gè)户秤。
示例 1:
輸入: [10,2]
輸出: "102"
示例2:
輸入: [3,30,34,5,9]
輸出: "3033459"
法一:
num = []
def str_sorted(num1):
nums = [str(i) for i in num1]
if len(nums) == 0:
#print(num)
print(''.join(num))
num.clear()
else:
for i in range(len(nums)):
if nums[i-1]+''+nums[i] < nums[i]+''+nums[i-1]:
nums[i-1],nums[i] = nums[i],nums[i-1]
res = nums.pop()
num.append(res)
str_sorted(nums)
str_sorted([3,30,34,5,9])
str_sorted([10,2])
法二:
import itertools
def minNumber(nums):
list1 = []
A = list(itertools.permutations(nums, len(nums)))
for i in range(len(A)):
A[i] = [str(i) for i in A[i]]
list1.append(''.join(A[i]))
list1.sort()
return list1[0]
print(minNunber([10,2]))
print(minNumber([3,30,34,5,9]))
法三:
def minNumber(nums):
def sort_rule(x, y):
a, b = x + y, y + x
if a > b:
return 1
elif a < b:
return -1
else:
return 0
strs = [str(num) for num in nums]
strs.sort(key=functools.cmp_to_key(sort_rule))
return ''.join(strs)
print(minNumber([3, 31, 34, 5, 9]))