排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{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中调用非静态成员函数。静态成员函数或者全局函数是不依赖于具体对象的, 可以独立访问,无须创建任何对象实例就可以访问。同时静态成员函数不可以调用类的非静态成员。

posted on 2019-05-19 20:31  腻烦s  阅读(61)  评论(0)    收藏  举报

导航