1. 程式人生 > >把陣列排成最小的數——數字轉字串to_string()的用法,sort()的compare函式用法

把陣列排成最小的數——數字轉字串to_string()的用法,sort()的compare函式用法

輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323.

將vector中的數字轉化為string型別用於排序,排序規則是如果a+b<b+a,a排在前。

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
static bool cmp(int a, int b) {
	string A = to_string(a) + to_string(b);
	string B = to_string(b) + to_string(a);
	return A<B;
}
string PrintMinNumber(vector<int> numbers) {
	string answer = "";
	sort(numbers.begin(), numbers.end(), cmp);
	for (int i = 0; i<numbers.size(); i++) {
		answer += to_string(numbers[i]);
	}
	return answer;
}
int main() {
	vector<int> v = { 3,32,321,23 };
	string s = PrintMinNumber(v);
	cout << s;
	return 0;
}