题目:输入一个正整数数组,把数组里面所有的数字拼接排成一个数,打印能拼接的所有数中最小的一个。
代码示例:
#include<iostream>
#include<vector>
#include<string>
#include <algorithm>
using namespace std;
vector<string> res;
bool CompareStr(const string &str1, const string &str2)
{
string s1 = str1 + str2;
string s2 = str2 + str1;
int temp= s1.compare(s2);
if (temp <= 0)
return true;
else
return false;
}
void ComputeMin(int a[], int n)
{
if (a == NULL || n <= 0)
return;
if (n == 1)
{
res.push_back(to_string(a[0]));
return;
}
for (int i = 0; i < n; i++)
{
string str = to_string(a[i]);
res.push_back(str);
}
sort(res.begin(), res.end(), CompareStr);
}
int main()
{
const int n = 2;
int a[n] = { 1234,7890 };
ComputeMin(a, n);
for (int i = 0; i < res.size(); i++)
cout << res[i];
cout << endl;
}