找给定的整数型数组中将数拼接成的正整数中最小的,如给定 123 321 ,则形成的最小的整数位123321
利用STL中的算法快速实现,代码如下:
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;
bool compare(const string& str1, const string &str2)
{
string s1=str1+str2;
string s2=str2+str1;
return s1<s2;
}
void ComArrayMin(int *pArray, int num)
{
int i;
string *pStrArray=new string[num];
for(i=0; i<num; i++)
{
stringstream stream;
stream<<pArray[i];
stream>>pStrArray[i];
}
sort(pStrArray, pStrArray+num, compare);
for(i=0; i<num; i++)
cout<<pStrArray[i];
cout<<endl;
delete[] pStrArray;
}
int main()
{
int Num;
cin>>Num;
int *pArray=new int[Num];
for(int i=0; i<Num; i++)
cin>>pArray[i];
ComArrayMin(pArray, Num);
return 0;
}