首页 > 学院 > 开发设计 > 正文

关于将整数转化为字符串

2019-11-06 07:19:29
字体:
来源:转载
供稿:网友
算法题:把数组排成最小的数,输入一个正整数数组,把数组里所有的数字拼接起来排成一个数,打印拼接出来的所有的数字中的最小的一个。例如输入数组{3,,32,,321},则打印出这3个数字能排成的最小数字是321323;
const int MaxNumberLength = 10;char *StrCombine1 = new char[MaxNumberLength*2+1];char *StrCombine2 = new char[MaxNumberLength*2+1];int compare(const void* StrNum1,const void* StrNum2){	strcpy(StrCombine1,*(const char**)StrNum1);	strcat(StrCombine1,*(const char**)StrNum2);	strcpy(StrCombine2,*(const char**)StrNum2);	strcat(StrCombine2,*(const char**)StrNum1);	return strcmp(StrCombine1,StrCombine2);}void PRintMinNum(int *numbers,int length){	if(numbers==NULL|| length<=0)		return;	char** StrNum = (char**)(new int[length]);//注意此处的定义	for(int i = 0;i<length;i++)	{		StrNum[i] = new char[MaxNumberLength+1];		sprintf(StrNum[i],"%d",numbers[i]);	}	qsort(StrNum,length,sizeof(char*),compare);	for(int i = 0;i<length;i++)		printf("%s",StrNum[i]);	printf("/n");	for(int i = 0;i<length;++i)		delete[] StrNum[i];	delete[] StrNum;}将数组中的数字转换成字符串,在函数compare中定义比较规则,并依据该规则用库函数qsort排序,比较的规则是:把数字m和n拼接起来得到mn和nm,它们的位数肯定是相同的,因此比较他们的大小只需要按照字符串的大小的比较规则就可以了。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表