• 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 = '';
    
        return 0;
    }
    
    int main()
    {
        int a[] = {4589, 101, 41425, 9999};
        char buf[1000];
        smallestDigit(a, 4, buf);
        cout << buf << endl;
    
        return 0;
    }
    
  • 相关阅读:
    面试准备
    session
    memcached优化方案实例
    MySQL用户管理
    MySQL事务
    Linux防火墙
    Linux权限体系
    Linux查看日志文件
    查看系统状态
    负载均衡(六)分表分库的负载均衡
  • 原文地址:https://www.cnblogs.com/fengkang1008/p/5211005.html
Copyright © 2020-2023  润新知