题解 | #把数组排成最小的数#
把数组排成最小的数
https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993
把数组排成最小的数:最直观的想法是,重载sort函数的cmp函数,注意,其中的cmp函数是静态的,因为static函数与具体的对象无关,其可以被全局调用。排序即按照一定顺序排列元素,该顺序可以是递增的,也可以是递减的,甚至可以是自定义的。由于返回的结果要求是字符串,故先将数字数组转换为字符串数组,然后对字符串数组按照自定义顺序cmp进行排序,接着将排序后的字符串数组元素拼接成字符串,其中cmp是字符串拼接比较函数,即字符串s1和s2,其要求s1+s2小于s2+s1的,其中字符串比较是按照字典顺序比较的。
static bool cmp(string &s1,string &s2)
{
return (s1+s2)<(s2+s1);
}
string PrintMinNumber(vector<int> numbers)
{
//空数组特判
if(numbers.size()==0)
return "";
vector<string> res;
//先将数字数组转换成字符串数组
for(auto number:numbers)
res.push_back(to_string(number));
//重载sort排序比较函数
sort(res.begin(),res.end(),cmp);
//结果字符串
string ans;
//拼接字符串
for(auto str:res)
ans+=str;
return ans;
}
#把数组排成最小的数#
剑指offer 文章被收录于专栏
剑指offer专栏主要分享剑指offer题解。
查看12道真题和解析