把陣列排成最小的數——數字轉字串to_string()的用法,sort()的compare函式用法
阿新 • • 發佈:2019-02-12
輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{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; }