题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
考察点:定义新的排序规则;字符串表示数字转化
思路:参考大佬的代码,写得真好,这样写比书上的易懂。
定义一个新的排序规则,对数组中的数组进行排序,之后进行拼接。
class Solution {
public:
static bool cmp(int a, int b)
{
string A = to_string(a)+to_string(b);;
string B = to_string(b)+ to_string(a);
return A < B;//拼接完进行字符串的比较
}
string PrintMinNumber(vector<int> numbers)
{
string result = "";
sort(numbers.begin(), numbers.end(), cmp);//已经排好序
for (int i = 0; i < numbers.size(); i++)
result += to_string(numbers[i]);
return result;
}
};