劍指offer---把數組排成最小的數

題目描述

輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章