Largest Number

题目来源
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.
Note: The result may be very large, so you need to return a string instead of an integer.

首字母不一样的很好就能区别大小,直接比较字符串大小就可以了,主要是首字母一样的情况下,不太好判断。
突然想到可以把所有的都填充成一样长的,后面填充a,然后比较大小,然后再把所有的a都去掉。这样子应该是可行的!
刚才的想法是错的,比如34,3这种情况就没考虑。
想了挺久还是没想出正确答案,然后看了讨论区的答案。
感觉还是做题做的太少了,或者说C++的知识太弱了,根本不知道sort的这种用法。

class Solution {
public:
    string largestNumber(vector& nums) {
        vector Snums;
        for (auto num : nums) {
            Snums.push_back(to_string(num));
        }
        sort(Snums.begin(), Snums.end(), [](string &s1, string &s2){return s1 + s2 > s2 + s1;});
        string res = "";
        for (auto num : Snums)
            res += num;
        if (res[0] == '0')
            res = "0";
        return res;
    }
};

你可能感兴趣的:(Largest Number)