把数组排成最小的数

来源:互联网 发布:内存频率检测软件 编辑:程序博客网 时间:2024/05/30 23:10


把数组排成最小的数
  • 参与人数:2338时间限制:1秒空间限制:32768K
  • 本题知识点: 数组
  •  算法知识视频讲解

题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
class Solution {public:    static bool cmp(string a,string b)      {  string s1=a+b;        string s2=b+a;        return s1<s2;      }      string PrintMinNumber(vector<int> numbers) {        string result;        if(numbers.size()<=0){            return result;        }        vector<string> strnum;                        string s;        stringstream ss;        for(auto i : numbers){                        ss<<i;            ss>>s;            ss.clear();            strnum.push_back(s);        }        sort(strnum.begin(),strnum.end(),cmp);                for(auto j : strnum)            result += j;        return result;    }};

一个是 int 到 string 方法,第一次用stringstream

stringstream ss;

int i = 123456;

ss<<i;

string s;

ss >> s;

ss.clear();


一个是sort 用自己写的比较函数

http://blog.csdn.net/zzzmmmkkk/article/details/4266888/

    static bool cmp(string a,string b)      {  string s1=a+b;        string s2=b+a;        return s1<s2;     <span style="font-family: Arial, Helvetica, sans-serif;"> }  </span>
sort(strnum.begin(),strnum.end(),cmp);


0 0
原创粉丝点击