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 // 将数值转化为字符串。返回对应的字符串。
在代码的世界尽情的翱翔吧!

浙公网安备 33010602011771号