題目描述
輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。
解題思路:
將數組中的所有數字轉換爲字符串,然後進行升序排列
static bool cmp(int num1,int num2){//如32和321 32321 > 32132
string str1 = to_string(num1) + to_string(num2);
string str2 = to_string(num2) + to_string(num1);
return str1 < str2;//升序排列
}
//把數組排成最小的數
string PrintMinNumber(vector<int> numbers){
string result = "";
if(numbers.empty()){
return result;
}
sort(numbers.begin(),numbers.end(),cmp);
for(int i = 0;i < numbers.size();i++){
result += to_string(numbers[i]);//此時即爲最小的數
}
return result;
}