179、最大数

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

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

 

一、如何确定每个数字的前后顺序?

  答:通过字符串之间的大小比较。两个字符串在比较大小时会逐位比较ASCII码的值,因此若两个字符串a,b进行组合后a+b>b+a那么字符串a的相对位置就应当在字符串b的前面。

二、如何将数字转化为字符串?

  答:使用to_string(int number)函数,将数字转化为字符串形式(string库)

三、如何实现此种排序?

  答:手写cmp函数,然后使用sort()函数对vector<string>进行排序,代码块如下:

        vector<string> s;
        auto cmp = [](string left,string right){
            return left + right > right + left;
        };
        for(int i =0;i<n;i++){
            string tem = to_string(nums[i]);
            s.push_back(tem);
        }
        sort(s.begin(),s.end(),cmp);    

  其中,cmp为手写的匿名函数,包含排序规则。

 

posted @ 2022-03-17 15:33  czy1223  阅读(68)  评论(0)    收藏  举报