LeetCode刷题12-整型数组按个位值排序

package com.example.demo.leetcode.case202208;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 功能描述
 *
 * @author ASUS
 * @version 1.0
 * @Date 2022/8/6
 */
public class Main2022080608 {

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

    输入描述
    给定一个非空数组(列表)
    其元素数据类型为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
    */
    public static void main(String[] args) {
        // 获取输入信息
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        LinkedHashSet<String> elementList = new LinkedHashSet<>(Arrays.asList(str.split(",")));
        // 从小到大
        System.out.println(elementList.stream()
                .sorted(Comparator.comparingInt(o -> o.charAt(o.length() - 1)))
                .collect(Collectors.joining(",")));
        // 从大到小
        System.out.println(elementList.stream()
                .sorted(Comparator.comparingInt(Main2022080608::applyAsInt).reversed())
                .collect(Collectors.joining(",")));
    }

    /**
     * 字符串最后一位元素
     *
     * @param o
     * @return
     */
    private static int applyAsInt(String o) {
        return o.charAt(o.length() - 1);
    }
}

 

posted @ 2022-08-06 19:07  chch213  阅读(272)  评论(0编辑  收藏  举报