题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路:设计一个排序依据,实现数组内每个数的排序,好比普通数字排序。
代码:
class Solution {
public:
string PrintMinNumber(vector<int> numbers) {
vector<string> mystr(numbers.size());
for(int i=0;i<numbers.size();i++)
{
stringstream sin;//字符串流实现数字到字符串的转换
sin<<numbers[i];
sin>>mystr[i];
}
sort(mystr.begin(),mystr.end(),cmp);
vector<char> tt;
for(int j = 0;j<mystr.size();j++)
{
for(int k = 0;k<mystr[j].size();k++)
{
tt.push_back(mystr[j][k]);
}
}
string result(tt.begin(),tt.end());
return result;
}
static bool cmp(string a,string b) //类类调用时加static,这里我也没明白
{
return a+b<b+a;
}
};