一、题目
二、思路
1、排序,转换为字符进行排序,如果是第一个字符不相同的,直接按照字符大小进行排序
2、第一个字符相同的,把两个字符拼接起来,然后按照字符从大到小排序返回
3、拍完序后,考虑vector的第一个容器为0的情况,这时直接返回“0”;
4、遍历vector容器中的每个数字,将其转换为字符串进行拼接输出
关键点:在排序规则里面,当第一个字符相同时,对两个字符进行拼接,返回字符最大的那个;考虑所有字符为0的情况
三、代码
class Solution {
public:
/**
* 最大数
* @param nums int整型vector
* @return string字符串
*/
string solve(vector<int>& nums) {
string str="";
if(nums.empty())
{
return str;
}
//sort排序
sort(nums.begin(),nums.end(),[](const int &a,const int &b)
{
string str1=to_string(a);
string str2=to_string(b);
//当第一个位相同时,交换他们进行比较
if(str1[0]==str2[0])
{
string str3=str1+str2;
string str4=str2+str1;
return str3>str4;
}
//返回大的
else
{
//转换为符号返回
return str1>str2;
}
});
//判断第一个为0的情况
if(nums[0]==0)
{
return "0";
}
//进行添加返回
string OutPut="";
for(int i=0;i<nums.size();++i)
{
OutPut+=to_string(nums[i]);
}
return OutPut;
}
};