首页 > 试题广场 >

牛牛拼数

[编程题]牛牛拼数
  • 热度指数:445 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛有个正整数且每个正整数最大不超过1000,他将它们拼成一排,组成一个最大的整数,他想知道能组成的最大的数字是多少?
示例1

输入

["1","2"]

输出

"21"

说明

这两个数能够组成最大的数为21 
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 返回这n个数能够组成的最大的数字是多少
     * @param s string字符串vector 
     * @return string字符串
     */
    
    string formMaxNumber(vector<string>& s) {
        // write code here
        sort(s.begin(),s.end(), [&](string a, string b){
            return a+b>b+a;
        });
        string res;
        for(int i = 1;i<=s.size();i++)
            res+=s[i-1];
        return res;
    }
};

发表于 2021-07-25 22:53:06 回复(0)
bool static compare_string_by_number(const string &v1,const string &v2){
    return v1+v2>v2+v1;
}
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 返回这n个数能够组成的最大的数字是多少
     * @param s string字符串vector 
     * @return string字符串
     */
    string formMaxNumber(vector<string>& s) {
        // write code here
        string res="";
        if(s.size()==0)
            return res;
        sort(s.begin(),s.end(),compare_string_by_number);

        for(auto &it:s)
            res+=it;
        return res;
    }
};
编辑于 2021-04-25 21:21:00 回复(0)