• 剑指OFFER之把数组排成最小的数


    题目描述:

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

     

    输入:

    输入可能包含多个测试样例。
    对于每个测试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数。
    输入的第二行包括m个正整数,其中每个正整数不超过10000000。

     

    输出:

    对应每个测试案例,
    输出m个数字能排成的最小数字。

     

    样例输入:
    3
    23 13 6
    2
    23456 56
    样例输出:
    13236
    2345656

    Code:
    #include <iostream>
    #include <string>
    #include <algorithm>
     
    using namespace std;
     
    bool cmp(string str1,string str2){
        string tmpStr1=str1+str2;
        string tmpStr2=str2+str1;
        return tmpStr1<=tmpStr2;
    }
     
    int main()
    {
        const int arrSize=110;
        string arr[arrSize];
        int length;
        while(cin>>length){
            for(int i=0;i<length;++i){
                cin>>arr[i];
            }
            sort(arr,arr+length,cmp);
            for(int i=0;i<length;++i){
                cout<<arr[i];
            }
            cout<<endl;
        }
        return 0;
    }
     
    /**************************************************************
        Problem: 1504
        User: lcyvino
        Language: C++
        Result: Accepted
        Time:220 ms
        Memory:1528 kb
    ****************************************************************/
  • 相关阅读:
    面向对象(6day)
    pycharm使用问题总结
    docker学习(一)ubuntu上安装docker
    docker指令
    docker简单使用
    使用Docker搭建多人使用GPU服务器
    ubuntu常用指令
    高斯滤波
    ubuntu创建个人账户
    第一次使用SSE指令集
  • 原文地址:https://www.cnblogs.com/Murcielago/p/4202725.html
Copyright © 2020-2023  润新知