Arrange an Array to Form a Smallest Digit

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arrange an Array to Form a Smallest Digit相关的知识,希望对你有一定的参考价值。

/**
 * 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;
 */

// 功能:将输入的数组排成最小的数
// 输入: int a[]:整型数组
//       int nCount:数组长度
//       char * strRst 返回值
// 输出:
// 返回:成功返回0  异常返回-1

#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>

using namespace std;

bool cmp(string str1, string str2)
{
    return (str1 + str2 < str2 + str1);
}

int smallestDigit(int a[], int nCount, char *strRst)
{
    if(NULL == a || nCount <= 0 || NULL == strRst)
    {
        return -1;
    }

    vector<string> numStrs;
    stringstream strStream;
    string num;
    /*! int转string */
    for(int i = 0; i < nCount; ++i)
    {
        strStream << a[i];
        strStream >> num;
        strStream.clear();
        numStrs.push_back(num);
    }

    sort(numStrs.begin(), numStrs.end(), cmp);

    int len  = 0;
    for(int i = 0; i < numStrs.size(); ++i)
    {
        len = numStrs[i].size();
        strncpy(strRst, numStrs[i].c_str(), len);
        strRst += len;
    }
    *strRst = ‘\0‘;

    return 0;
}

int main()
{
    int a[] = {4589, 101, 41425, 9999};
    char buf[1000];
    smallestDigit(a, 4, buf);
    cout << buf << endl;

    return 0;
}

 

以上是关于Arrange an Array to Form a Smallest Digit的主要内容,如果未能解决你的问题,请参考以下文章

[GeeksForGeeks] Sort an array in wave form

[MST] Create an Entry Form to Add Models to the State Tree

[Python Cookbook] Numpy: Multiple Ways to Create an Array

HDU 5653 Bomber Man wants to bomb an Array. DP

HDOJ 5653 Bomber Man wants to bomb an Array.(DP)

Minimum number of swaps required to sort an array