- 时间限制:1秒空间限制:32768K
- 通过比例:24.10%
- 最佳记录:0ms|8552K(来自 牛客688826号)
题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
class Solution {
public:
static bool compare(const string& s1,const string& s2){
string str1=s1+s2;
string str2=s2+s1;
return str1<str2;
}
string PrintMinNumber(vector<int> numbers) {
string ret;
if(numbers.empty()) return ret;
int num=numbers.size();
string *pStr=new string[numbers.size()];
for(int i=0;i<numbers.size();++i){
stringstream ss;
ss<<numbers[i];
ss>>pStr[i];
}
sort(pStr,pStr+num,compare);
for(int i=0;i<num;i++){
ret+=pStr[i];
}
delete [] pStr;
return ret;
}
};