public:
    /**
     * 最大数
     * @param nums int整型vector 
     * @return string字符串
     */
    /*static bool cmp(string a,string b){
        int i=0,m=a.size(),n=b.size();
        while(i<m&&i<n){
            if(a[i]>b[i]) return true;
            else if(a[i]<b[i]) return false;
            else i++;
        }
        while(i<m){
            if(a[i]>b[n-1]) return true;
            else if(a[i]<b[n-1]) return false;
            else i++;
        }
        while(i<n){
            if(a[m-1]>b[i]) return true;
            else if(a[m-1]<b[i]) return false;
            else i++;
        }
        return m>n;
    }*/
    static bool cmp(string a,string b){
        return a+b>b+a;
    }
    string solve(vector<int>& nums) {
        // write code here
        int i,n=nums.size();
        vector<string> ve(n);
        for(i=0;i<n;i++){
            ve[i]=to_string(nums[i]);
        }
        sort(ve.begin(),ve.end(),cmp);
        if(ve[0]=="0") return "0";
        string res="",temp;
        for(i=0;i<n;i++){
            res+=ve[i];
            temp+="0";
        }
        return res;
    }
};