标签:最小数 字符串 把数组排成最小的数 ring color 个数 打印 a+b 溢出
问题:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路:
这是个大数问题,因为最后的数字可能会溢出,所以可以用字符串来排列结果。
对于任意两个数字a,b,可对其进行排列,比较规则是 a+b 和 b+a 哪个大。由此可对输入数组进行排序,排序后的结果即最小数字。
class Solution { public: static bool cmp(int a,int b){ string A = "",B = ""; A += to_string(a); A += to_string(b); B += to_string(b); B += to_string(a); return A<B; } string PrintMinNumber(vector<int> numbers) { string res = ""; if(numbers.empty()) return res; sort(numbers.begin(),numbers.end(),cmp); for(auto i:numbers){ res += to_string(i); } return res; } };
标签:最小数 字符串 把数组排成最小的数 ring color 个数 打印 a+b 溢出
原文地址:https://www.cnblogs.com/fanmu/p/11334013.html