https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/
思路:首先把每个整数都转换成字符串,关键是如何组合这些字符串,显然对于任意两个字符串 s 1 、 s 2 s_1、s_2 s1、s2来说,如果 s 1 + s 2 < s 2 + s 1 s_1+s_2<s_2+s_1 s1+s2<s2+s1,就应该把 s 1 s_1 s1放在 s 2 s_2 s2前面,否则把 s 1 s_1 s1放在后面。
class Solution {
public:
static bool cmp(const string &s1,const string &s2)
{
return s1+s2<s2+s1;
}
string minNumber(vector<int>& nums) {
vector<string> ans;
stringstream s;
int sz=nums.size();
for(int i=0;i<sz;i++)
{
s<<nums[i];
ans.push_back(s.str());
s.str("");
}
sort(ans.begin(),ans.end(),cmp);
string res;
for(int i=0;i<sz;i++)
res+=ans[i];
return res;
}
};