本文共 891 字,大约阅读时间需要 2 分钟。
思路:比较粗暴,写一个比较方法,然后冒泡排序,最后合并。
public class Solution { public String largestNumber(int[] nums) { if (nums.length == 1) { return String.valueOf(nums[0]); } int temp = 0; for (int i = nums.length - 1; i > 0; i--) { for (int j = 0; j < i; ++j) { if (new Solution().compare(nums[j], nums[j + 1])) { temp = nums[j]; nums[j] = nums[j + 1]; nums[j + 1] = temp; } } } StringBuffer sb = new StringBuffer(); if (nums[nums.length - 1] == 0) { return "0"; } for (int i = nums.length - 1; i >= 0; i--) { sb.append(String.valueOf(nums[i])); } return sb.toString(); } public boolean compare(int a, int b) { char[] ca=(String.valueOf(a)+String.valueOf(b)).toCharArray(); char[] cb=(String.valueOf(b)+String.valueOf(a)).toCharArray(); for (int i = 0; i < ca.length; i++) { if (ca[i]>cb[i]) { return true; } if (ca[i]
耗时:392ms,发现同一个算法测试情况可能会相差100ms多。。。。真是瞎了狗眼。