剑指 Offer 45. 把数组排成最小的数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210315153432805.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NDU0ODUy,size_16,color_FFFFFF,t_70)
class Solution {
public:
struct cmp{
bool operator ()(string str1, string str2) {
return str1 + str2 > str2 + str1;
}
};
string minNumber(vector<int>& nums) {
priority_queue<string, vector<string>, cmp> Q;
for(auto num : nums) Q.push(to_string(num));
string ans = "";
while(!Q.empty()) {
ans += Q.top();
Q.pop();
}
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210315153118888.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NDU0ODUy,size_16,color_FFFFFF,t_70)
class Solution {
public:
struct cmp{
bool operator ()(string str1, string str2) {
int len1 = str1.size(), len2 = str2.size();
int min_len = min(len1, len2);
if(len1 == len2 || str1.substr(0, min_len) != str2.substr(0, min_len)) return str1 > str2;
if(len1 > len2) return operator ()(str1.substr(min_len), str2);
return operator ()(str1, str2.substr(min_len));
}
};
string minNumber(vector<int>& nums) {
priority_queue<string, vector<string>, cmp> Q;
for(auto num : nums) Q.push(to_string(num));
string ans = "";
while(!Q.empty()) {
ans += Q.top();
Q.pop();
}
return ans;
}
};