把数组排成最小的数

Posted chenguang9239

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了把数组排成最小的数相关的知识,希望对你有一定的参考价值。

bool com( const string& a, const string& b )
{
    string A;
    A.append( a );
    A.append( b );
    string B;
    B.append( b );
    B.append( a );
    
    int i = 0;
    while( A[i] == B[i] )
    {
        i++;
    }

    return A[i] < B[i];
}

string PrintMinNumber(vector<int> numbers)
{
    string res = "";
    vector< string > snumbers;
    char num[ 10 ];
    string snum;
    for( int i = 0; i < numbers.size(); i++ )
    {
        sprintf( num, "%d", numbers[i] );
        snum = num; //snum.length()为实际字符长度
        snumbers.push_back( snum );
    }

    //默认用string的compare函数,字符串比较, "3" < "32" < "321",但与题不符
    //sort默认升序排序
    //sort( snumbers.begin(), snumbers.end() );

    sort( snumbers.begin(), snumbers.end(), com );

    for( int i = 0; i < snumbers.size(); i++ )
    {
        //cout << snumbers[i];
        res += snumbers[i];
    }
        //cout << endl;
    return res;
}

 

以上是关于把数组排成最小的数的主要内容,如果未能解决你的问题,请参考以下文章

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

剑指offer三十二之把数组排成最小的数

Java 剑指offer(45) 把数组排成最小的数

剑指 Offer 45. 把数组排成最小的数 剑指 Offer 61. 扑克牌中的顺子 剑指 Offer 40. 最小的k个数

剑指offer 面试题33 把数组排成最小的数

把数组排成最小的数