29.把数组排成最小的数

把数组排成最小的数
  • 参与人数:2166时间限制:1秒空间限制:32768K
  • 本题知识点:  数组
  •  算法知识视频讲解

题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
不难,熟悉了stringstream类的使用,sort的使用,了解了c_str(),str()。
如果把
if ( num.empty() ) return result ;
换成
if ( num.empty() ) return NULL ;
会报错。
result.append( vecStr[i] ) ;
可以替换为
result += vecStr[i] ;

class Solution {
public:
    
    static bool compare( const string& t1, const string& t2 ) {
		string s1 = t1 + t2 ;
        string s2 = t2 + t1 ;
        return s1 < s2 ;
    }
    
    string PrintMinNumber(vector<int> num) {
        string result ;
        if ( num.empty() ) return result ;
        
        vector<string> vecStr ;
        stringstream ss ;
        
        for ( int i = 0; i < num.size(); i++ ) {
            ss << num[i] ;
            string tmp = ss.str() ;
            vecStr.push_back( tmp ) ;
            ss.str("") ;
        }
        
        sort( vecStr.begin(), vecStr.end(), compare ) ;
        
        for ( int i = 0; i < vecStr.size(); i++ ) {
            result.append( vecStr[i] ) ;
        }
        
        return result ;
    }
};


你可能感兴趣的:(29.把数组排成最小的数)