题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323


class Solution {

static bool compare(int a,int b)
{
//按照两数转成字符串相拼接的大小进行排序
string str_1=to_string(a)+to_string(b);
string str_2=to_string(b)+to_string(a);

return str_1<str_2;
}
public:
//多个整型的数字拼接可能会导致结果,int越界,所以将最后的结果转化成string 型,是一个很好的选择
string PrintMinNumber(vector<int> numbers) {

string str;
if(numbers.size()==0)return str;
sort(numbers.begin(),numbers.end(),compare);//按照两数转成字符串相拼接的大小进行排序

for(int i=0;i<numbers.size();i++)
{
str+=to_string(numbers[i]);
}
return str;

}
};