题目描述【Again!值得回味】
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。【stringstream的用法:
http://www.cppblog.com/Sandywin/archive/2007/07/13/27984.html】
class Solution {
public:
static bool Compare(const string& s1, const string& s2)
{
string _s1 = s1;
string _s2 = s2;
_s1.append(s2);
_s2.append(s1);
return _s1 < _s2;
}
string FindMinInt(vector<int>& a, int len)
{
string* tmp = new string[len];
stringstream ss;
int i = 0;
while (i < len)
{
ss << a[i];
ss >> tmp[i];
ss.clear();
++i;
}
/*
while (i < len)
{
ss << a[i];
tmp[i]=ss.str();
ss.str("");
++i;
}
*/
sort(tmp, tmp + len, Compare);
string res="";
for (int i = 0; i < len; ++i)
{
res.append(tmp[i]);
}
return res;
}
string PrintMinNumber(vector<int> numbers) {
int len=numbers.size();
string str = FindMinInt(numbers,len);
return str;
}
};