【剑指offer】把数组排成最小的数
题目链接:把数组排成最小的数
题意:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
题解:重载一下cmp函数。数字转成string。排序规律就是字符串组合起来,小的放前面。
代码:
1 class Solution { 2 public: 3 static bool cmp(int x,int y){ 4 string xx = to_string(x); 5 string yy = to_string(y); 6 return xx+yy < yy+xx; 7 } 8 string PrintMinNumber(vector<int> numbers) { 9 sort(numbers.begin(),numbers.end(),cmp); 10 string ans = ""; 11 int len = numbers.size(); 12 for(int i = 0; i < len ;i++){ 13 ans += to_string(numbers[i]); 14 } 15 return ans; 16 } 17 };