题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
string PrintMinNumber(vector<int> numbers) {
int len = numbers.size();
string arr[len];
for(int i=0; i<len; i++)
{
string str;
while(numbers[i])
{
char num = numbers[i]%10+'0';
str = num+str;
numbers[i] /= 10;
}
arr[i] = str;
}
for(int i=0; i<len; i++)
{
for(int j=1; j<len; j++)
{
if(arr[j-1]+arr[j] > arr[j]+arr[j-1])
{
string str;
str = arr[j-1];
arr[j-1] = arr[j];
arr[j] = str;
}
}
}
string ans;
for(int i=0; i<len; i++)
{
ans += arr[i];
}
return ans;
}