拿到这个题的第一个想法是 将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; } };
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/nk_test/article/details/48393157