剑指Offer之面试题33:把数组排成最小的数

来源:互联网 发布:义乌淘宝营销培训 编辑:程序博客网 时间:2024/06/05 17:19


所有代码均通过G++编译器测试,仅为练手纪录。


//面试题33:把数组排成最小的数

//题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出所有数字中最小的一个。

//    例如输入数组{332321},则打印出这3个数字能排成的最小数字321323.


//面试题33:把数组排成最小的数//题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出所有数字中最小的一个。//     例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.bool StrCompare(string &strElem1, string &strElem2){    string strFirst(strElem1+strElem2);    string strSecond(strElem2+strElem1);        return strFirst < strSecond;}string GetMinNum(int *piNum,int nSize){    if(NULL == piNum || nSize <= 0)    {        return "";    }        vector<string> vecNum(nSize);    for(int i = 0; i < nSize; ++i)    {        vecNum[i] = to_string(piNum[i]);    }        sort(vecNum.begin(), vecNum.end(), StrCompare);        string strMin;    for(int i = 0; i < nSize; ++i)    {        strMin += vecNum[i];    }        return strMin;}void TestGetMinNum(){    int arrVal[] = {3,32,321};    int nValSize = sizeof(arrVal)/sizeof(int);        LogInfo("MinNum:%s",GetMinNum(arrVal,nValSize).c_str());}



ZhaiPillary

2017-01-07


0 0
原创粉丝点击