El número mínimo de matriz alineados (22)

título

[Introduzca un vector de enteros positivos, la matriz uniendo todos los números en fila un número, imprimir todos los números pueden empalmarse en el más pequeño. 3,32,321 matriz de entrada} {por ejemplo, imprimir el número mínimo de tres cifras se pueden organizar como 321323]


1, el análisis

  • Para hacer notar que durante el empalme, el corte y empalme de dos tipo int número entero números hasta puede exceder el rango que puede ser expresado por int digital, lo que resulta en desbordamiento numérico. De este modo digital, se puede convertir en una cadena, por lo que los datos están fuera de rango puede resolver problemas como conveniente y seguro.
  • Y un número b digitales, unidas longitudinalmente juntos si ab <ba Se define un número menor que el número b, que como una nueva regla.

2, el código

class Solution {
public:
    string PrintMinNumber(vector<int> numbers) {
        int len=numbers.size();
        if(len<=0)
            return res;
        // 按照指定的规则来进行排序
        sort(numbers.begin(),numbers.end(),cmp);
        for(auto &i:numbers)
        {
            res+=to_string(i);
        }
        return res;
    }
    // 指定排序的规则
   static bool cmp(int num1,int num2)
    {
        string str1=to_string(num1)+to_string(num2);
        string str2=to_string(num2)+to_string(num1);
        return str1<str2;
    }
private:
    string res;
};
Publicados 213 artículos originales · ganado elogios 48 · vistas 110 000 +

Supongo que te gusta

Origin blog.csdn.net/Jeffxu_lib/article/details/104737640
Recomendado
Clasificación