19.按十进制最低位排序

给定一个非空数组(列表),起元素数据类型为整型
请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变
当数组元素为负值时,十进制最低为等同于去除符号位后对应十进制值最低位

输入描述
给定一个非空数组(列表),其元素数据类型为32位有符号整数,数组长度为[1,1000]
输出排序后的数组

输入
1,2,5,-21,22,11,55,-101,42,8,7,32
输出
1,-21,11,-101,2,22,42,32,5,55,7,8

 

查看代码

import java.util.*;

public class Demo19 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String[] split = sc.nextLine().split(",");

        int len = split.length;
        ArrayList<Integer> list = new ArrayList<>();
        for(int i = 0; i < len; i++){
            list.add(Integer.parseInt(split[i]));
        }

        list.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                int d1 = o1 > 0 ? o1 : - o1;
                int d2 = o2 > 0 ? o2 : - o2;
                int k1 = d1 % 10;
                int k2 = d2 % 10;

                return k1 - k2;
            }
        });

        StringBuilder sb = new StringBuilder();
        for(int i : list){
            sb.append(i).append(",");
        }
        String ans = sb.toString();
        System.out.println(ans.substring(0, ans.length() - 1));
    }
}

 

 

posted @ 2022-03-26 11:33  Jukim  阅读(398)  评论(0编辑  收藏  举报