把数组排成最小的数
作者:互联网
把数组排成最小的数
基本思想
- 首先将整型数组转为字符串数组
- 对字符串数组进行排序,这里的排序与传统的排序不一样,排序规则为:s1+s2<s2+s1?我们把两个字符串连接起来的整体大小为比较的准则,如果s1+s2<s2+s1,则定义s1比s2小,否则定义s2小。(这一点在做题目的时候是往往没有想到的。。。)
代码
class Solution {
public:
//1.将整型数组转为字符串数组
//2.对字符串数组进行排序 排序规则是:s1+s2<s2+s1? s1:s2.
string PrintMinNumber(vector<int> numbers) {
string res="";
//转为字符串数组
int sz=numbers.size();
vector<string> strs;
for(int i=0;i<sz;i++) strs.push_back(to_string(numbers[i]));
//排序
sort(strs.begin(),strs.end(),cmp);
//组合连接
for(int i=0;i<sz;i++) res+=strs[i];
return res;
}
static bool cmp(const string& s1,const string& s2){
return s1+s2<s1+s2;
}
};
总结
没有想到用新的排序规则对字符串数组进行排序!编程路上,砥砺前行~
标签:排成,2Fta%,s2,s1,最小,数组,字符串,排序 来源: https://blog.csdn.net/qq_42211773/article/details/115559154