给定一个正整数序列,请尝试通过将它们重新排列,组合成一个最小的整数。例如输入为数组 [3, 6, 9, 12],返回值为12369。由于有可能会超出整数最大范围,所以请返回字符串类型。
剑指offer上有
class Solution{
public:
string printMin(vector<int> num){
if(num.size() == 0)
return "";//如果数组为空,返回空字符串
sort(num.begin(), num.end(), cmp);//对数字按照定义的方式排序
string res = "";
for(auto i : num){//对于所有数组中的数字,拼接转为字符串
res += to_string(i);
}
return res;
}
static bool cmp(int a, int b){//比较拼接之后的字符串谁更大,ASCII的比较比如312>213
string stra = to_string(a) + to_string(b);
string strb = to_string(b) + to_string(a);
return stra < strb;
}
}