假设我们有一个称为nums的数字列表,我们必须重新排列其顺序以形成最大可能的数字并将其作为字符串返回。
因此,如果输入类似于nums = [20、8、85、316],则输出将为“ 88531620”。
为了解决这个问题,我们将遵循以下步骤-
定义阵列温度
对于我以数字表示的每个项目:
将我作为字符串插入temp
根据字典顺序对数组temp排序(当串联b大于b串联a时,检查两个字符串a,b)
对于临时中的每个字符串:
res:= res串联
返回资源
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h> using namespace std; static bool cmp(string a, string b) { return (a + b) >= (b + a); } string solve(vector<int>& nums) { vector<string> temp; for (int i : nums) { temp.push_back(to_string(i)); } sort(temp.begin(), temp.end(), cmp); string res; for (string s : temp) { res += s; } return res; } int main(){ vector<int> v = {20, 8, 85, 316}; cout << solve(v); }
{20, 8, 85, 316}
输出结果
88531620