您的任务是创建一个函数,该函数可以将任何非负整数作为参数,并以其降序返回数字。 基本上,重新排列数字以创建尽可能高的数字。
Examples:
Input: 21445
Output: 54421
Input: 145263
Output: 654321
Input: 1254859723
Output: 9875543221
代码
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; /** * @program: nettytest * @description: * @author: hantao * @create: 2019/04/08 15:46 */ public class ArrTurn { //方法一 public static int sortDesc(final int num) { String str=num+""; List<String> list=new ArrayList<>(); for(int i=0;i<str.trim().length();i++){ list.add(str.charAt(i)+""); } String[] arr=new String[list.size()]; list.toArray(arr); for(int i=0;i<arr.length-1;i++){ for(int k=0;k<arr.length-i-1;k++){ if(Integer.valueOf(arr[k])>Integer.valueOf(arr[k+1])){ Integer t=Integer.valueOf(arr[k+1]); arr[k+1]=arr[k]; arr[k]=t+""; } } } StringBuilder sb=new StringBuilder(); for(int j=0;j<arr.length;j++){ sb.append(arr[j]); } sb=sb.reverse(); String ss=sb.toString(); int nums=Integer.valueOf(ss).intValue(); return nums; } //方法二 public static int sortDesc1(final int num) { String[] array = String.valueOf(num).split(""); Arrays.sort(array, Collections.reverseOrder()); return Integer.valueOf(String.join("", array)); } public static void main(String[] args) { System.out.println("ss:"+sortDesc(26541)); System.out.println("ss:"+sortDesc1(26541)); } }