给定一组非负整数 nums
,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 1:
输入:
nums = [10,2]
输出:"210"
示例 2:
输入:
nums = [3,30,34,5,9]
输出:"9534330"
c++解法
- class Solution {
- public:
- string largestNumber(vector<int>& nums) {
- vector
strs; - string res;
- for (int i = 0; i < nums.size(); i++)
- strs.push_back(to_string(nums[i]));
- sort(strs.begin(), strs.end(), [](string& x, string& y){ return y + x < x + y; });
- if (strs[0] == "0")
- return "0";
- for (int i = 0; i < strs.size(); i++)
- res.append(strs[i]);
- return res;
- }
- };
本题要重新排序整数中各个数字来得到最大值,可以利用转换字符串排序的方法,将每个数字转换为字符,将得到的字符串排序后返回即可
本题考察对字符串和数组的应用,利用排序可得到答案