您的位置:首页 > Web前端

[剑指offer]把数组排成最小的数

2016-05-04 08:59 369 查看


题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

分析:将int型的数组转化为string型的数组,再将string型的数组排序,排序规则依据比较两个string变量相加后的大小(注意这个cmp函数必须为静态成员函数)。

代码:

class Solution {
public:
static bool cmp(string s1,string s2){
string a=s1+s2;
string b=s2+s1;
return a<b;
}
string PrintMinNumber(vector<int> numbers) {
string ret="";
int n=numbers.size();
if(n<=0) return ret;
vector<string> nums;
for(int i=0;i<n;i++){
nums.push_back(to_string(numbers[i]));
}
sort(nums.begin(),nums.end(),cmp);
for(string num:nums){
ret+=num;
}
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: