给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
示例 1:
输入:[10,2]输出:210
示例 2:
输入:[3,30,34,5,9]输出:9534330
说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。
运用了C++11的一些特性函数
to_string()将一个数字变成一个字符串。
stoi(),将一个字符串变成数字
atoi(),将一个字符串变成数字,区别是atoi参数是一个指针,需要用c_str().
比如atoi(a.c_str());stoi(a);。把数字变成字符串,然后按照i+j>j+i排序,加起来即可
class Solution { public: string largestNumber(vector<int>& nums) { vector<string> numstr; for(int i=0;i<nums.size();i++) { numstr.push_back(to_string(nums[i])); } sort(numstr.begin(),numstr.end(),cmp); if(numstr.size()&&numstr[0]=="0") return "0"; string s=""; for(int i=0;i<numstr.size();i++) { s+=numstr[i]; } return s; } static bool cmp(string i,string j) { return i+j>j+i; } };