给定一个非负整数的列表,安排它们形成最大的数字。
例如,给定[3, 30, 34, 5, 9]
的最大的数字是9534330
。
注意:结果可能非常大,因此您需要返回一个字符串而不是整数。
如152 和11
15211>11152,则152排在11前面,以此两两比较,确定每个数的位置
C++代码
struct{
bool operator()(string a,string b)
{
string c1=a+b;
string c2=b+a;
return c1>c2;
}
}cmp;
class Solution {
public:
string largestNumber(vector<int>& nums) {
if(nums.size()==0)
return "";
vector<string> num_str;
for(int i=0;i<nums.size();i++)
num_str.push_back(to_string(nums[i]));
std::sort(num_str.begin(),num_str.end(),cmp);
string rest1="";
for(int i=0;i<num_str.size();i++)
rest1+=num_str[i];
if(rest1[0]=='0')
return "0";
else
return rest1;
}
};