把数组排成最小的数

把数组排成最小的数

https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey

题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

示例1

输入
[3,32,321]
返回值
"321323"

思路

1.这题有两种做法,一种暴力做法,即全排列后一一比较。另一种是贪心做法,设定排序规则:对于字符串s1和s2,当s1+s2<s2+s1,将s1排在s2前。
2.做这题时暴露了我字符串函数不熟练的问题,因此特地记下此题。
3.数字转字符串用to_string();
4.排序函数中的排序规则可以简易写。

code

class Solution {
public:
    string PrintMinNumber(vector<int> numbers) {
        vector<string> strs;
        for(auto i:numbers)
            strs.push_back(to_string(i));
        sort(strs.begin(),strs.end(),[](string a,string b){
            return a+b<b+a;
        });
        string res;
        for(auto s:strs)res+=s;
        return res;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-19 18:52
七牛云一生之敌I两个...:自我评价删了,其他浓缩为一页
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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