描述: | Question: Input an array of positive integers, arrange the integers to form new digits, and output the smallest digit among all the new ones.
Input Example 1: {2, 1} Output Example 1: 12
Input Example 2: {32, 321} Output Example 2: 32132
Input Example 3: {4589, 101,41425,9999} Output Example 3: 1014142545899999;
Interface: int smallestDigit(int a[],int nCount,char * strRst) Function: Arrange digits in the input array to form a smallest digit. int nCount: length of the array char * strRst: returned value |
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <string>
#include <vector>
#include <algorithm>
#include "oj.h"
using namespace std;
bool compare(string a, string b)
{
string add1 = a + b;
string add2 = b + a;
if (add1 < add2)
{
return true;
}
return false;
}
// 功能:将输入的数组排成最小的数
// 输入: int a[]:整型数组
// int nCount:数组长度
// char * strRst 返回值
// 输出:
// 返回:成功返回0 异常返回-1
int smallestDigit(int a[],int nCount,char * strRst)
{
if (a == NULL || nCount <= 0 || strRst == NULL)
{
return -1;
}
vector<string> vec;
int i = 0;
/*将整形数据转换转换为string,并存储在vec中*/
for (i = 0; i < nCount; i++)
{
char str[20] = { 0 };
sprintf_s(str, "%d", a[i]);
string sstr(str);
vec.push_back(sstr);
}
sort(vec.begin(), vec.end(), compare);
int j = 0,k = 0;
for (i = 0; i < vec.size(); i++)
{
for (j = 0; j < vec[i].size(); j++)
{
strRst[k++] = vec[i][j];
}
}
strRst[k] = '\0';
return 0;
}
描述: | Question: Input an array of positive integers, arrange the integers to form new digits, and output the smallest digit among all the new ones.
Input Example 1: {2, 1} Output Example 1: 12
Input Example 2: {32, 321} Output Example 2: 32132
Input Example 3: {4589, 101,41425,9999} Output Example 3: 1014142545899999;
Interface: int smallestDigit(int a[],int nCount,char * strRst) Function: Arrange digits in the input array to form a smallest digit. int nCount: length of the array char * strRst: returned value |