输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
class Solution {
public:
//day2017-7-13
//周四
static bool compare(const string &a,const string &b)
{
string s1=a+b;
string s2=b+a;
return s1<s2;
}
string PrintMinNumber(vector<int> numbers) {
//健壮性
string res;
if(numbers.size()==0) return res;
vector<string> strnum;
for(int i=0;i<numbers.size();i++)
{
stringstream ss;
ss<<numbers[i];
string s=ss.str();
strnum.push_back(s);
}
sort(strnum.begin(),strnum.end(),compare);
for(int i=0;i<strnum.size();i++)
{
res.append(strnum[i]);
}
return res;
}
};
本文介绍了一种算法,该算法接收一个正整数数组,通过特定比较逻辑将数组中的所有数字进行排序并拼接,最终输出能构成的最小数字。示例代码使用C++实现。
4094

被折叠的 条评论
为什么被折叠?



