#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include "oj.h"
using namespace std;
bool comp(int iElem1, int iElem2)
{
string str1;
char ch1[100];
memset(ch1, 0, sizeof(char) * 100);
itoa(iElem1, ch1, 10);
str1 = ch1;
string str2;
char ch2[100];
memset(ch2, 0, sizeof(char) * 100);
itoa(iElem2, ch2, 10);
str2 = ch2;
int iCur1 = 0; //str1的下标
int iCur2 = 0;//str2的下标
int len1 = str1.length();
int len2 = str2.length();
while (iCur1 < len1 && iCur2 < len2)
{
if (str1[iCur1] < str2[iCur2])
{
return true;
}
else if(str1[iCur1] > str2[iCur2])
{
return false;
}
iCur1 ++;
iCur2 ++;
}
if (iCur1 < len1)
{
while (iCur1 < len1)
{
iCur2 = (iCur2 + 1)% len2;
if (str1[iCur1] < str2[iCur2])
{
return true;
}
else if(str1[iCur1] > str2[iCur2])
{
return false;
}
iCur1 ++;
}
}
else if(iCur2 < len2)
{
while (iCur2 < len2)
{
iCur1 = (iCur1 + 1)% len1;
if (str1[iCur1] < str2[iCur2])
{
return true;
}
else if(str1[iCur1] > str2[iCur2])
{
return false;
}
iCur2 ++;
}
}
return false;
}
// 功能:将输入的数组排成最小的数
// 输入: int a[]:整型数组
// int nCount:数组长度
// char * strRst 返回值
// 输出:
// 返回:成功返回0 异常返回-1
int smallestDigit(int a[],int nCount,char * strRst)
{
if (NULL == a)
{
return -1;
}
sort(a, a + nCount , comp);
char cTemp[100];
for (int i = 0; i < nCount; ++i )
{
cout<<a[i]<<" ";
memset(cTemp, 0, sizeof(char) * 100);
itoa(a[i], cTemp, 10);
strcat(strRst, cTemp);
}
cout<<endl;
return 1;
}
int main()
{
int a[] = {1,2};
char szRst[100] = {0};
char *strExpect = "12";
smallestDigit(a,2,szRst);
cout<<szRst<<endl;
//CPPUNIT_ASSERT(0 == strcmp(szRst,strExpect));
return 0;
}
Arrange an Array to Form a Smallest Digit
最新推荐文章于 2021-04-03 18:48:32 发布