class Solution { public: static bool ms(string str1,string str2){ if(str1.size()>str2.size()){ for(int i=0;i<str2.size();i++){ if(str1[i]>str2[i]){ return false; } else if(str1[i]<str2[i]){ return true; } } return ms(str1.substr(str2.size(),str1.size()-str2.size()),str2); } else if(str1.size()<str2.size()){ for(int i=0;i<str1.size();i++){ if(str2[i]>str1[i]){ return true; } else if(str2[i]<str1[i]){ return false; } } return ms(str1,str2.substr(str1.size(),str2.size()-str1.size())); } else{ for(int i=0;i<str1.size();i++){ if(str2[i]>str1[i]){ return true; } else if(str2[i]<str1[i]){ return false; } } return false; } } string PrintMinNumber(vector<int> numbers) { string str=""; vector<string> strs(numbers.size()); for(int i=0;i<strs.size();i++){ string str0=""; if(numbers[i]==0){ str0="0"; } while(numbers[i]!=0){ string s=" "; s[0]=(char)(numbers[i]%10+48); str0=s+str0; numbers[i]/=10; } strs[i]=str0; } sort(strs.begin(),strs.end(),ms); for(int i=0;i<strs.size();i++){ str=str+strs[i]; } return str; } };