1. 程式人生 > >179. 最大數

179. 最大數

給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。

示例 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; } } };