179. 最大數
阿新 • • 發佈:2019-01-26
給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。
示例 1:
輸入: [10,2]
輸出: 210
示例 2:
輸入: [3,30,34,5,9]
輸出: 9534330
說明: 輸出結果可能非常大,所以你需要返回一個字串而不是整數。
思路:這道題其實還挺好想的,就考了個排序。我們自己寫個比較函式,假設陣列中只有兩個數的情況下,其實只有兩種排列情況,一個在前一個在後,或者倒一下。這樣cmp函式就來了,int 轉為 string 後 return s1 + s2 > s2 + s1即可。有一點注意下,如果陣列中全是0,我們不能輸出一長串0,而是隻需輸出一個0即可。
class Solution {
public:
bool static cmp(int a, int b) {
string s1 = to_string(a);
string s2 = to_string(b);
return s1 + s2 > s2 + s1;
}
string largestNumber(vector<int>& nums) {
string res;
sort(nums.begin(), nums.end(), cmp);
for( int i = 0; i < nums.size(); i++) {
res += to_string(nums[i]);
}
if(res[0] == '0') {
return "0";
} else {
return res;
}
}
};