题目描述
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数
- 打印能拼接出的所有数字中最小的一个
- 例如,输入数组 {3, 32, 321},则打印出这 3 个数字能排成的最小数字 321323
题目解读
代码
#include<iostream>
#include <vector>
using namespace std;
class Solution {
public:
string PrintMinNumber(vector<int> numbers) {
int len = numbers.size();
vector<string> numbers_string;
for (int i = 0; i < len; ++i)
{
numbers_string.push_back(to_string(numbers[i]));
}
//排序
for(int i=0; i < len-1; i++){
for (int j=i+1; j<len; j++)
{
if(numbers_string[i] + numbers_string[j] > numbers_string[j] + numbers_string[i]){
string tt;
tt = numbers_string[i];
numbers_string[i] = numbers_string[j];
numbers_string[j] = tt;
}
}
}
string result;
for (int i = 0; i < len; ++i)
{
result += numbers_string[i];
}
return result;
}
};
int main(){
Solution ss;
int bb[10] = {3, 32, 321};
vector<int> aa;
for (int i = 0; i < 3; ++i)
{
aa.push_back(bb[i]);
}
cout<<ss.PrintMinNumber(aa)<<endl;
}
总结展望