68题
输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的
只要把相邻两个字符串进行连接,比较字符串大小。最后排序一下即可
用c++实现起来比java麻烦多了,int与string不能直接连接的,必须先把int转化成string
c++11标准中提供了std:tostring方法
#include<iostream>
#include<algorithm>
#include<string>
#include <sstream>
using namespace std;
string itos(int i) // convert int to string
{
stringstream s;
s << i;
return s.str();
}
int compare (const void * a, const void * b)
{
string s1=( ""+itos(*(int*)a)+itos(*(int*)b) );
string s2=(""+itos(*(int*)b)+itos(*(int*)a) );
if(s1>s2) return 1;
else if(s1==s2) return 0;
else return -1;
}
int main ()
{
int n;
int values[] = { 40, 10, 100, 90, 202, 25 };
qsort (values, 6, sizeof(int), compare);
string s="";
for(int i=0;i<6;i++)
s+=itos(*(int*)(values+i));
cout<<s;
return 0;
}