題目描述
給定一組非負整數,從新排列它們的順序使之組成一個最大的整數。數組
示例 1:spa
輸入:
輸出: [10,2]210
示例 2:code
輸入:
輸出: [3,30,34,5,9]9534330
說明: 輸出結果可能很是大,因此你須要返回一個字符串而不是整數。blog
解題思路
組成最大數應使得高位數字儘可能大,因此首先按照高位數字從大到小對數組排序,而後一次從高位到低位組成最大數。注意若數組全爲0,則直接返回一個0.排序
代碼
1 class Solution { 2 public: 3 string largestNumber(vector<int>& nums) { 4 vector<string> numStr; 5 for(int num: nums) 6 numStr.push_back(to_string(num)); 7 sort(numStr.begin(), numStr.end(), cmp); 8 if(numStr.size() && numStr[0] == "0") return "0"; 9 string s = ""; 10 for(string num: numStr) 11 s += num; 12 return s; 13 } 14 static bool cmp(string i, string j){ 15 return i + j > j + i; 16 } 17 };