179. 最大数
179. 最大数
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 1:
输入:nums = [10,2]
输出:"210"
示例 2:
输入:nums = [3,30,34,5,9]
输出:"9534330"
排序
- 按照规则排成最大的数字,首先可将输入类型
vector<int>转为vector<string>方便处理。 - 容易观察出来的是,按照从前往后的字符顺序,越大的排在越前面。
- 同时,排序具有传递性,例如给出
(a,b,c)三个字符串数字,排序最大。那么先排ab,再排c;与先排ac,再排b是一样的结果。
class Solution {
private:
static bool cmp(string a, string b){
return a + b > b + a;
}
public:
string largestNumber(vector<int>& nums) {
// 写作字符串后 排序。。
// to_string(), 转字符串函数
int n = nums.size();
vector<string> nums_str(n);
for(int i = 0; i < n; ++i){
nums_str[i] = to_string(nums[i]);
}
sort(nums_str.begin(), nums_str.end(), cmp);
string ans = "";
for(auto s: nums_str){
if(ans == "0")
return ans;
ans += s;
}
return ans;
}
};

浙公网安备 33010602011771号