【题目】输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
【思路】这题可以转化为一个优先级的问题(个人理解),就是将第一个数A和后面的数x依次比较优先级,Ax>xA说明x应该放在A前面然后依次按照优先级排序,把最高的放在第一位,这样就转化为一个排序的问题,排完序后按照将其连成一个字符串,即可输出。
【代码】
class Solution:
def PrintMinNumber(self, numbers):
# write code here
if not numbers:
return ""
res = ""
for i in range(len(numbers)):
for j in range(i+1,len(numbers)):
a = int(str(numbers[i])+str(numbers[j]))
b = int(str(numbers[j])+str(numbers[i]))
if a > b:
tem = numbers[i]
numbers[i] = numbers[j]
numbers[j] = tem
for i in range(len(numbers)):
res += str(numbers[i])
return res