牛客题霸 [最大数] C++题解/答案
题目描述
给定一个数组由一些非负整数组成,现需要将他们进行排列并拼接,使得最后的结果最大,返回值需要是string类型 否则可能会溢出
题解:
将字符串存入vector中然后sort排序,最后将所以字符串连在一起
但是注意,最前面的字符串不能以0开始,所以先将开头的0筛过
代码:
class Solution {
public:/*** 最大数* @param nums int整型vector * @return string字符串*/string solve(vector<int>& nums) {// write code herevector<string> str;for (int i = 0; i < nums.size(); i++) {str.push_back(to_string(nums[i]));}sort(str.begin(), str.end(), cmp);string ans = "";int i = 0;while (i < str.size()-1 && str[i] == "0") {i++;}while (i < str.size()) {ans += str[i];i++;}return ans;}static bool cmp(string a, string b) {return a+b > b+a;}
};