java problem 8

Your task is to make a function that can take any non-negative integer as a argument and return it with its digits in descending order. Essentially, rearrange the digits to create the highest possible number.

Examples:
Input: 21445 Output: 54421

Input: 145263 Output: 654321

Input: 123456789 Output: 987654321

1:
improt java.util.Comparator;
improt java.util.stream.Collectors;
improt java.util.stream.Stream;
public class MM{
	public static int method(final int num){
	//java8
	return Integer.parseInt(Stream.of(String.valueOf(num).split(""))
	.sorted(Comparator.reverseOrder())
	.collect(Collectors.joining()));
}
}
2:
import java.util.Comarator;
import java.util.stream.Collectors;
public class MM{
	public static int method(final int num){
		return Integer.ParseInt(String.valueOf(num)
		.chars()
		.mapToObj(i->String.valueOf(Character.getNumericValue(i)))
		.sorted(Comparator.reverseOrder())
		.collect(Collectors.joining()));
}
}
3:
public class MM{
	public static int method(final int num){
		if(num<0) throw new IllegalArgumentException("Negative"+num);
		return Integer.parseInt(Integer.toString(num).codePoints()
		.sorted()
		.collect(StringBuilder::new,
		StringBuilder::appendCodePoint,StringBuilder::append)
		.reverse()
		.toString());
}
}
4:
import java.util.Arrays;
import java.util.Collections;
public class MM{
	public static int method(final int num){
		String[] array=String.valueOf(num).split("");
		Arrays.sort(array,Collection.reverseOrder());
		return Integer.valueOf(String.join("",array));
}
}
5:
import java.util.*;
public class MM {
    public static void main(String args[]) {
        System.out.println(method(424345));
    }
    public static int method(final int num) {
        List<Integer> list=new ArrayList();
        String result="";
        char[] arr=Integer.toString(num).toCharArray();
        for(char item:arr){
            list.add((item-'0'));
        }
        Collections.sort(list);
        for(int item:list){
            result+=(char)(item+48);
        }
        String mid= new StringBuffer(result).reverse().toString();
        return Integer.parseInt(mid);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值