解题思路:关键问题是确定一个排序规则(mn
bool cmp(string str1, string str2)
{
string strtmp1 = str1 + str2;
string strtmp2 = str2 + str1;
return strtmp1 > strtmp2;
}
string largestNumber(vector<int>& nums)
{
int n = nums.size();
vector<string> strnums(n);
//将整型数字转化为字符串进行操作
for (int i = 0; i < n; i++)
strnums[i] = to_string(nums[i]);
sort(strnums.begin(), strnums.end(), cmp);
//排好序后,直接组装成最终结果
string res = "";
for (int i = 0; i < n; i++)
{
res += strnums[i];
}
//排除"00"的情况
if (res[0] == '0')
return "0";
return res;
}