JZ45-题解 | #把数组排成最小的数#

把数组排成最小的数

http://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993

题目描述


输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。
1.输出结果可能非常大,所以你需要返回一个字符串而不是整数
2.拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0


题解:辅助数组,排序


代码

class Solution {
public:
    struct compare{
        bool operator()(string a,string b){
            return a+b < b+a;
        }
    };
    string PrintMinNumber(vector<int> numbers) {
        vector<string> v;
        //将整数转变为字符串
        for(int i =0;i<numbers.size();i++){
            v.push_back(to_string(numbers[i]));
        }
        //字符串数组进行排序,按照升序进行排序
        sort(v.begin(),v.end(),compare());
        string result="";
        //字符串拼接
        for(int i =0;i<v.size();i++){
            result+=v[i];
        }
        return result;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务