把数组排成最小的数

来源:互联网 发布:个人所得税网络申报 编辑:程序博客网 时间:2024/05/22 15:26


class Solution {public:    bool com(string s,string st){        int i;        for(i = 0; i < s.length() && i < st.length(); i++){            if(s[i] > st[i])                return true;            if(s[i] < st[i])                return false;        }        if(i == s.length()){            while(i < st.length() && st[i] == st[i - 1])                i++;            if(i != st.length() && st[i] > st[i-1])                return false;            return true;        }        if(i == st.length()){            while(i < s.length() && s[i] == s[i - 1])                i++;            if(i != s.length() && s[i] > s[i-1])                return true;            return false;        }        return false;    }    string itos(int n){        vector<int> vc;        while(n != 0){            vc.push_back(n % 10);            n /= 10;        }        string s = "";        for(int i = vc.size() - 1; i >= 0; i--){            s.push_back(char(vc[i]+48));        }        return s;    }    vector<string> intConvertStr(vector<int> numbers){        vector<string> vs;        vs.resize(numbers.size());        vs[0] = itos(numbers[0]);        for(int i = 1; i < numbers.size();i++){            string s = itos(numbers[i]);            int j;            for(j = i - 1; j >= 0; j--){                vs[j+1] = vs[j];                if(com(s,vs[j])){                    vs[j+1] = s;                    break;                }            }            if(j == -1)                vs[0] = s;        }        return vs;    }string PrintMinNumber(vector<int> numbers) {        if(numbers.size() == 0)            return "";vector<string> vs = intConvertStr(numbers);        string str = "";        for(int i = 0; i < vs.size();i++)            str += vs[i];        return str;}};


0 0