重点:字符串的排序,自定义排序方式,快排
sort(strs.begin(),strs.end(),[](string& x,string& y){return x+y<y+x;});
class Solution {
public:
string minNumber(vector<int>& nums) {
//字符串,自定义排序规则
vector<string> strs;
string res;
for(int i=0;i<nums.size();i++){
strs.push_back(to_string(nums[i]));
}
//方法一,sort自定义排序函数,自定义返回值为true,则认为x要排在y前面
//sort(strs.begin(),strs.end(),[](string& x,string& y){return x+y<y+x;});
//方法二,自定义快排函数
quicksort(strs,0,strs.size()-1);
for(int i=0;i<strs.size();i++){
res.append(strs[i]);
}
return res;
}
void quicksort(vector<string>& strs,int l,int r){
if(l>=r)
return;
int i=l;
int j=r;
while(i<j){
while(i<j && (strs[l]+strs[j]<=strs[j]+strs[l])) j--;
while(i<j && (strs[i]+strs[l]<=strs[l]+strs[i])) i++;
swap(strs[i],strs[j]);
}
swap(strs[i],strs[l]);
quicksort(strs,l,i-1);
quicksort(strs,i+1,r);
}
};