其他分享
首页 > 其他分享> > 把数组排成最小的数

把数组排成最小的数

作者:互联网

题目连接:https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993?tpId=13&tqId=11185&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tab=answerKey.

把数组排成最小的数

基本思想

  1. 首先将整型数组转为字符串数组
  2. 对字符串数组进行排序,这里的排序与传统的排序不一样,排序规则为: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