[leetcode] 179.Largest Number

来源:互联网 发布:java初学者推荐书籍 编辑:程序博客网 时间:2024/05/19 22:00

题目:
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.
题意:
给定一堆非负整数,找出它们拼接在一起的最大整数。
思路:
对于10,8这两个数字,我们拼接起来可以得到108和810,810更大些,所以这两个数字之间8应该在前面。我们依照此思路,使用sort来排序,先将数字转变为字符串,然后可以使用字符串的比较来比较a+b与b+a哪个字符串更大,因此sort调用这个比较函数可以完成排序。
代码如下:

class Solution {public:    static bool myComp(string a, string b)    {        return ((a + b > b + a) ? true: false);    }    string largestNumber(vector<int>& nums)     {        vector<string> num_s;        for(auto n : nums)        {            stringstream ss;            ss<<n;            num_s.push_back(ss.str());        }        int size = num_s.size();        sort(num_s.begin(), num_s.end(), myComp);        int i = 0;        while(i < size && num_s[i] == "0")i++;        if(i == size)return "0";        string res;        for(int j = i; j < size; j++){            res += num_s[j];        }        return res;    }};
0 0
原创粉丝点击