把数组排成最小的数
- 假定两个想邻的数字m,n如果拼接处mn<=nm那么m在n的前面,定义为m<=n;否则定义为n
class Solution {
public:
string PrintMinNumber(vector<int> numbers) {
sort(numbers.begin(),numbers.end(),compare);
string ret="";
for(auto i:numbers){
string s;
stringstream ss;
ss<<i;
ss>>s;
ret+=s;
}
return ret;
}
//定义m,n如果mn<nm;那么m在n的前面,定义这个时候m<n;
//注意这个题目需要考虑大数问题,自然需要用到字符串来代替数字
static bool compare(int m,int n){
string sm;
string sn;
stringstream ss;
ss<<m;
ss>>sm;
ss.clear();
ss<<n;
ss>>sn;
return (sm+sn)<=(sn+sm);
}
};