首页 > 其他 > 详细

排成最小的数

时间:2019-05-19 20:51:05      阅读:88      评论:0      收藏:0      [点我收藏+]

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

 1 class Solution {
 2 public:
 3     static bool cmp(int a,int b)
 4     {
 5         string str1 = to_string(a)+to_string(b);
 6         string str2 = to_string(b)+to_string(a);
 7         return str1<str2;
 8     }
 9     string PrintMinNumber(vector<int> numbers) {
10         int len = numbers.size();
11         if(len==0)return "";
12         sort(numbers.begin(),numbers.end(),cmp);
13         string res;
14         for(int i=0;i<len;i++)
15         {
16             res += to_string(numbers[i]);
17         }
18         return res;
19         
20         
21     }
22 };

这里cmp用了static的原因:sort中的比较函数compare要声明为静态成员函数或全局函数,不能作为普通成员函数,否则会报错。 因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局的,因此无法再sort中调用非静态成员函数。静态成员函数或者全局函数是不依赖于具体对象的, 可以独立访问,无须创建任何对象实例就可以访问。同时静态成员函数不可以调用类的非静态成员。

排成最小的数

原文:https://www.cnblogs.com/chaoza1/p/10890651.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!