32把数组排成最小的数({3,32,321}输出最小数字为321323)
把数组排成最小的数({3,32,321}输出最小数字为321323) //把数组排成最小的数 //输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 // //思路:解决大数的问题,就是把数字转换成字符串。然后比较字符串的大小 class Solution { public: string PrintMinNumber(vector<int> numbers) { if (numbers.size() == 0) { return ""; } if (number.size() == 1) { return to_string(numbers[0]); } int len = numbers.size(); vector<string> tmpVec; for (int i = 0; i < len; ++i) { tmpVec.push_back(to_string(numbers[i])); } sort(tmpVec.begin(), tmpVec.end(), compare); string res; for (int i = 0; i < len; ++i) { res = res + tmpVec[i]; } return res; } public: static bool compare(string str1, string str2) { string comp1 = str1 + str2; string comp2 = str2 + str1; return comp1 < comp2; } };
1 //知识扩展: 2 //C++ 排序函数 sort(),qsort()的用法 3 // ---Sort(start,end,排序方法) 4 // ---void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*)); 5 // 各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针 6 // 函数原型: 7 // string to_string (int val); 8 // string to_string (long val); 9 // string to_string (long long val); 10 // string to_string (unsigned val); 11 // string to_string (unsigned long val); 12 // string to_string (unsigned long long val); 13 // string to_string (float val); 14 // string to_string (double val); 15 // string to_string (long double val); 16 // 功能: 17 // 将数值转化为字符串。返回对应的字符串。
在代码的世界尽情的翱翔吧!