給定一個正整數序列,請嘗試通過將它們重新排列,組合成一個最小的整數。例如輸入爲數組 [3, 6, 9, 12],返回值爲12369。由於有可能會超出整數最大範圍,所以請返回字符串類型。
劍指offer上有
class Solution{
public:
string printMin(vector<int> num){
if(num.size() == 0)
return "";//如果數組爲空,返回空字符串
sort(num.begin(), num.end(), cmp);//對數字按照定義的方式排序
string res = "";
for(auto i : num){//對於所有數組中的數字,拼接轉爲字符串
res += to_string(i);
}
return res;
}
static bool cmp(int a, int b){//比較拼接之後的字符串誰更大,ASCII的比較比如312>213
string stra = to_string(a) + to_string(b);
string strb = to_string(b) + to_string(a);
return stra < strb;
}
}