题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接的所有数字中最小的一个。
例如:输入数组{3,32,321},则打印出这三个数字中能排成的最小数字为321323.
解题思路:
对vector容器中的数据进行排序。按照 将a和b转为string后,若a+b< b+a,a排在前面 的规则排序。
如 2,21 因为212<221,所以排序为21,2
tips:函数to_string(int) 可以将int转为string
static bool cmp(int a,int b)
{
string A ="";
string B="";
A+=to_string(a);
A+=to_string(b);
B+=to_string(b);
B+=to_string(a);
return A<B;
}
string PrintMinNumber(vector<int> numbers) {
string result;
sort(numbers.begin(),numbers.end(),cmp); //按照cmp规则对vector进行排序
for(int i=0;i<numbers.size();i++)
result+=to_string(numbers[i]);
return result;
}