拿到这个题的第一个想法是 将int转换成string,然后按照string的比较规则,但是发现 13<3<34这种不好处理。
那么何不我们直接比较下两者的组合,取其较大的呢,由此自定义优先级比较即可。
注意处理全是0的情况,只输出一个0即可。
class Solution {
public:
static bool comp(string s1,string s2)
{
return s1+s2>s2+s1;
}
string largestNumber(vector<int>& nums) {
vector <string> v;
string s,ans;
int flag=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]!=0)
flag=1;
stringstream stream;
stream<<nums[i];
stream>>s; //int转化为string
v.push_back(s);
}
if(!flag)
{
ans+='0';
return ans;
}
sort(v.begin(),v.end(),comp);
for(int i=0;i<v.size();i++)
ans+=v[i];
return ans;
}
};