原题地址:https://leetcode-cn.com/problems/largest-number/description/
题目描述:
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
示例 1:
输入: [10,2]
输出: 210
示例 2:
输入: [3,30,34,5,9]
输出: 9534330
说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。
解题方案:
- 学习to_string()函数的用法
- 学习基数排序的实现方式
- 学习"000..."转化为"0"的方式
代码:
class Solution {
public:
string largestNumber(vector<int>& nums) {
string ans;
for(int i = 0; i < nums.size(); i ++){
for(int j = nums.size() - 1; j > i; j --){
if(to_string(nums[j - 1]) + to_string(nums[j]) < to_string(nums[j]) + to_string(nums[j - 1])){
int tmp = nums[j - 1];
nums[j - 1] = nums[j];
nums[j] = tmp;
}
}
ans += to_string(nums[i]);
}
if (ans + "0" == "0" + ans) return "0";
return ans;
}
};