您的位置:首页 > 职场人生

剑指offer面试题33:把数组排成最小的数

2016-09-21 10:16 295 查看
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接触的所有数字中最小的一个。

思路:转为字符串,定义比较函数,使用标准库函数排序。

#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;

bool compare(const string &str1, const string &str2) {
string s1 = str1 + str2;
string s2 = str2 + str1;
return s1 < s2;
}

void ArrayMin(vector<int> num, int length) {
int i;
vector<string> strnum;
string s;

for (i = 0; i < length; i++) {
stringstream stream;
stream << num[i];
stream >> s;
strnum.push_back(s);
}
auto iter = strnum.begin();
sort(iter, iter + length, compare);

for (i = 0; i < length; i++)
cout << strnum[i];

cout << endl;
}

int main() {

vector<int> num;
int a;
while (cin >> a) {
num.push_back(a);
}
a = num.size();
ArrayMin(num, a);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: