32. El conjunto de número más pequeño alineado
problema:
Introduzca un array entero positivo, el conjunto de todos los números dispuestos en un número empalmados juntos, el empalme puede imprimir todos los números de uno más pequeño. 3,32,321 matriz de entrada} {por ejemplo, imprimir el número mínimo de tres números puede estar dispuesto para 321.323.
solución:
pensado:
Esta pregunta, tenemos que hacer, si a + b <b + AA anterior norma imperativa consecutivo, la clasificación de los elementos de la matriz, y se puede empalmar juntos.
código Python:
Aquí nota, porque el python3 versión elimina la función cmp, y los parámetros de la función cmp ordenadas, tenemos que utilizar functools en cmp_to_key para reemplazar el parámetro cmp originales.
Se ha pasado dos parámetros cmp_to_key x, y cuando x> y igual a 1 para volver retorno 0, de lo contrario -1
Se mecanismo está funcionando en la lista es la lista de elementos a la comparación por pares, el intercambio de dos elementos cuando el regreso es positivo cmp
# -*- coding:utf-8 -*-
import operator
import functools
class Solution:
def PrintMinNumber(self, numbers):
# write code here
if not numbers:
return ""
lmb=lambda x,y:int(str(x)+str(y))-int(str(y)+str(x))
num=sorted(numbers,key=functools.cmp_to_key(lmb))
return ''.join([str(i) for i in num])