最大数
-
题目:
题解:最大数就是将最大的组成放在前面,如示例2里面的
3和30比较,330和303,就是330更大,所以元素3在30之前
,将数字数组中的对应元素转为字符串数组中,然后用compareTo()
方法进行比较,它是从头开始比较字符串对应的AscII码
值,如果第一个字符相等,就比较后面一个,然后我们用快速排序方法Arrays.sort()
的lambda表达式
方式,具体的Arrays.sort()中的lambda表达式
讲解-
代码:
public String largestNumber(int []nums){ int n = nums.length; String[] array = new String[n]; for(int i=0;i<n;i++){ array[i] = String.valueOf(nums[i]); } //a.concat(b)方法是将两个字符串拼接在一起 Arrays.sort(array,(a,b)->b.concat(a).compareTo(a.concat(b))); //如果第一个元素就是0;那么后面的都比零小,所以直接返回0 if(array[0].equals("0")){ return "0"; } StringBuilder sb = new StringBuilder(); for(int i=0;i<n;i++){ sb.append(array[i]); } return sb.toString(); } }