【leetcode】Largest Number --C++

来源:互联网 发布:python哪些教程比较好 编辑:程序博客网 时间:2024/06/10 22:45

class Solution {public:    string largestNumber(vector<int>& nums) {        //第一步,把nums转换成string        vector<string> svec;        for(int i = 0;i != nums.size();++i)        {            svec.push_back(to_string(nums[i]));        }        //第二步,用系统自带的sort排序,不过我们要自己提供cmp函数(static)        sort(svec.begin(),svec.end(),cmp);        string s;        //第三步,把sort后的string 链接起来        for(int i = 0;i != svec.size();++i)            s += svec[i];        //第四步,去掉特殊的情况开始为零的情况        if(s[0] == '0' && s.size() > 0)            s = "0";        return s;    }    static bool cmp(const string &s1,const string &s2)    {        string tmp1(s1+s2);        string tmp2(s2+s1);        return tmp1 > tmp2;    }};
最后一点要注意的就是:里面的数字全是零的情况下,不是输出000.。。。而是输出  “0”。
Given a list of non negative integers, arrange them such that they form the largest number.

For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.

Note: The result may be very large, so you need to return a string instead of an integer.

Credits:

Special thanks to @ts for adding this problem and creating all test cases.

给一个数组,里面都是非负数,然后找出这些书可以组成的最大数。

这是剑指offer中的一道题。其思想是利用字符串的比较,例如 3,30 可以组成的最大数为330,而不是303,也就是  S1,S2可以组成:S1S2,S2S1,比较这两个哪个比较大,也就是字符串的排序。

还有就是,C++中的int转string

string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (unsigned val);string to_string (unsigned long val);string to_string (unsigned long long val);string to_string (float val);string to_string (double val);string to_string (long double val);

0 0
原创粉丝点击