拿到这个题的第一个想法是 将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; }
};