您的位置:首页 > 其它

29.把数组排成最小的数

2016-05-09 19:40 393 查看
把数组排成最小的数

参与人数: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 ;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: