题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
1 class Solution { 2 public: 3 static bool compare(const string &st1, const string &st2){ 4 string s1 = st1 + st2; 5 string s2 = st2 + st1; 6 return s1<s2; 7 } 8 string PrintMinNumber(vector<int> numbers) { 9 string result; 10 if (numbers.size() <= 0){ 11 return result; 12 } 13 vector<string> strNum; 14 for (int i = 0; i<numbers.size(); i++){ 15 stringstream ss; 16 ss << numbers[i]; 17 string s = ss.str(); 18 strNum.push_back(s); 19 } 20 sort(strNum.begin(), strNum.end(), compare); 21 22 for (int i = 0; i<strNum.size(); i++){ 23 result.append(strNum[i]); 24 } 25 return result; 26 27 } 28 };