LeetCode-整形陣列組合最大數(Java)
阿新 • • 發佈:2018-11-07
文章目錄
題目描述
給定一個正整型陣列,將陣列中各個元素組合成一個數,輸出組合結果最大的那個數。
示例
輸入: {9, 3, 32, 33, 303}
輸出: 9333323030
解析
按照正常排序演算法,重寫比較函式,例如3與302比較大小,則轉換為333與302比較大小。 public int getMaxNumber(int[] nums) { int len = nums.length; for(int i=0; i<len; i++){ for(int j=i+1; j<len; j++){ if(compare(nums[i], nums[j])){ int temp = nums[j]; nums[j] = nums[i]; nums[i] = temp; } } } return genResult(nums); } public boolean compare(int i, int j) { String strI = String.valueOf(i); String strJ = String.valueOf(j); int maxLen = Math.max(strI.length(), strJ.length()); if (strI.length() == strJ.length()) return i < j; if(strI.length() != maxLen){ while(strI.length() != maxLen){ strI = strI + strI.charAt(strI.length()-1); } } if(strJ.length() != maxLen){ while(strJ.length() != maxLen){ strJ = strJ + strJ.charAt(strJ.length()-1); } } return Integer.valueOf(strI) < Integer.valueOf(strJ); } public int genResult(int[] nums) { StringBuilder builder = new StringBuilder(); for(int i=0; i<nums.length; i++) { builder.append(nums[i]); } return Integer.valueOf(builder.toString()); }