剑指offer 编程题(31):把数组排成最小的数返回string

来源:互联网 发布:怎么查网络丢包率 编辑:程序博客网 时间:2024/06/05 03:34

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

class Solution {public:     static bool compare( const string &st1,const string &st2)            {                string s1 = st1+st2;                string s2 = st2+st1;                return s1<s2;            }    string PrintMinNumber(vector<int> numbers)    {        string res;        if(numbers.size() <= 0)        {            return res;        }        vector<string> str;        for (auto c : numbers)            str.push_back(std::to_string(c));         sort(str.begin(), str.end(),compare);         for (auto s : str)            res += s;        return res;    }};
int cmp(int a, int b){    stringstream s1, s2;    s1 << a << b;    s2 << b << a;    return s1.str() < s2.str();}class Solution {public:    string PrintMinNumber(vector<int> numbers) {        stringstream ss;        sort(numbers.begin(), numbers.end(), cmp);        for(auto num : numbers)            ss << num;        return ss.str();    }};
class Solution {public:    string PrintMinNumber(vector<int> numbers) {        if (numbers.empty())            return "";        vector<string> str;        str.resize(numbers.size());        for (auto c : numbers)            str.push_back(std::to_string(c));        std::sort(str.begin(), str.end(), [](string a, string b){return a + b < b + a;});        string result;        for (auto s : str)            result += s;        return result;    }};
class Solution {public:    static bool compare(int a, int b) {        string A = "";        string B = "";        A += to_string(a);        A += to_string(b);        B += to_string(b);        B += to_string(a);        return A < B;    }    string PrintMinNumber(vector<int> numbers) {        string ans = "";        sort(numbers.begin(), numbers.end(), compare);        for (int i = 0; i < numbers.size(); i++) {            ans += to_string(numbers[i]);        }        return ans;    }};
class Solution {public:     static bool compare(int a,int b)     {        string s1;        string s2;        s1.append(to_string(a));        s1.append(to_string(b));        s2.append(to_string(b));        s2.append(to_string(a));        return s1<s2;     }    string PrintMinNumber(vector<int> numbers)    {        string result;        sort(numbers.begin(),numbers.end(),compare);        for(int i=0;i<numbers.size();++i)        {            result.append(to_string(numbers[i]));        }        return result;    }};
阅读全文
0 0
原创粉丝点击