把数组排成最小的数
- 参与人数:2338时间限制:1秒空间限制:32768K
- 算法知识视频讲解
题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
class Solution {
public:
static bool cmp(string a,string b)
{
string s1=a+b;
string s2=b+a;
return s1<s2;
}
string PrintMinNumber(vector<int> numbers) {
string result;
if(numbers.size()<=0){
return result;
}
vector<string> strnum;
string s;
stringstream ss;
for(auto i : numbers){
ss<<i;
ss>>s;
ss.clear();
strnum.push_back(s);
}
sort(strnum.begin(),strnum.end(),cmp);
for(auto j : strnum)
result += j;
return result;
}
};
一个是 int 到 string 方法,第一次用stringstream
stringstream ss;
int i = 123456;
ss<<i;
string s;
ss >> s;
ss.clear();
一个是sort 用自己写的比较函数
http://blog.csdn.net/zzzmmmkkk/article/details/4266888/
static bool cmp(string a,string b)
{
string s1=a+b;
string s2=b+a;
return s1<s2;
<span style="font-family: Arial, Helvetica, sans-serif;"> } </span>
sort(strnum.begin(),strnum.end(),cmp);