#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000
int cmp(char *s1,char *s2){
char temp1[100];
char temp2[100];
strcpy(temp1,s1);
strcat(temp1,s2);
strcpy(temp2,s2);
strcat(temp2,s1);
if(strcmp(temp1,temp2)<0)return 1;
else return 0;
}
char* into_string(int n){
char *p;
p=(char*)malloc(50*sizeof(char));
sprintf(p,"%d",n);
return p;
}
char* largestNumber(int* nums, int numsSize) {
char re[100][100];
char temp[100];
char *p;
int i,j;
p=(char*)malloc(MAX*sizeof(char));
for(i=0;i<numsSize;i++)strcpy(re[i],into_string(nums[i]));
for(i=0;i<numsSize;i++){ //用的冒泡,不好意思@@ 虽然这是这题的核心算法,思想就是判断两个字串要不要交换位置的条件是,将这两个字串分别以两种方式拼接,再比较哪一 //种拼接更优
for(j=i+1;j<numsSize;j++)
if(cmp(re[i],re[j])){
strcpy(temp,re[i]);
strcpy(re[i],re[j]);
strcpy(re[j],temp);
}
}
for(i=0,p[0]='\0';i<numsSize;i++)
strcat(p,re[i]);
while(*p=='0')p++;
if(*p=='\0')return "0";
return p;
}