华为机试题:Arrange an Array to Form a Smallest Digit




描述: 

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. 
Input: int a[]: an array of integers

int nCount: length of the array

char * strRst: returned value
Output: none
Return: o indicates success and -1 indicates exception.



#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. 
Input: int a[]: an array of integers

int nCount: length of the array

char * strRst: returned value
Output: none
Return: o indicates success and -1 indicates exception.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dmfrm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值