把陣列排成最小的數

brucehb發表於2017-03-20
題目:輸入一個正整數陣列,將它們連線起來排成一個數,輸出能排出的所有數字中最小的
一個。
例如輸入陣列{32, 321},則輸出這兩個能排成的最小數字32132。
bool compare(const string &a, const string &b)
{
	string left = a + b;
	string right = b + a;
	return left.compare(right) < 0;
}

int fun(vector<int> a)
{
	vector<string> buf;
	for (int i = 0; i < a.size(); i++)
	{
		char str[100];
		sprintf(str, "%d", a[i]);
		buf.push_back(str);
	}

	sort(buf.begin(), buf.end(), compare);
	string val;
	for (int i = 0; i < a.size(); i++)
	{
		val = val + buf[i];
	}

	return atoi(val.c_str());
}


相關文章