179. 最大数

179. 最大数

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

 

示例 1:

输入nums = [10,2]
输出:"210"

示例 2:

输入nums = [3,30,34,5,9]
输出:"9534330"

 

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 109

 

解析:

用字符串排序即可,重载<,string a 和 string b,如果a + b > b + a,return 1,否则 return 0

注意前导0,当然其实只有全为0的时候才有前导0

class Solution {
public:
    
    string largestNumber(vector<int>& nums) {
        vector<string> strs;
        for(int i = 0; i < nums.size(); i++)
        {
            strs.push_back(to_string(nums[i]));
        }
        sort(strs.begin(), strs.end(), [](string a, string b)->bool{
            if(a + b > b + a) return 1;
            return 0; 
        });
        string temp = "";
        for(int i = 0; i < strs.size(); i++)
            temp += strs[i];
        string ret = "";
        int flag = 0;
        for(int i = 0; i < temp.length() - 1; i++)
        {
            if(flag == 0 && temp[i] == '0') continue;
            else flag = 1;
            ret += temp[i];
        }
        ret += temp[temp.length() - 1];


        return ret;
    }
};

 

posted @ 2022-10-07 09:52  WTSRUVF  阅读(21)  评论(0编辑  收藏  举报