把数组排成最小的数

来源:互联网 发布:csgo画质优化 编辑:程序博客网 时间:2024/06/08 17:09

题目描述【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;            }};




0 0