【华为OD题库-080】最小数字-java

题目

给定一个整型数组,请从该数组中选择3个元素组成最小数字并输出(如果数组长度小于3,则选择数组中所有元素来组成最小数字)。
输入描述:

一行用半角逗号分割的字符串记录的整型数组,0<数组长度<=100,0<整数的取值范围<=10000。
输出描述:

由3个元素组成的最小数字,如果数组长度小于3,则选择数组中所有元素来组成最小数字。
示例1:
输入

21,30,62,5,31
输出

21305
说明

数组长度超过3,需要选3个元素组成最小数字,21305由21,30,5三个元素组成的数字,为所有组合中最小的数字
示例2:
输入

5,21
输出

215
说明

数组长度小于3,选择所有元素组成最小值,215为最小值

思路

要组成最小数字,一定是要选3个最小的数字,比如选出来的数字是21,5,30

选出来的3个数字要组成最小数字,那么前面的位数要尽可能小,所以将数字转为字符串后逐位比较即可(String的compareTo方法刚好是这么实现的)

综上:可以利用strem特性先筛选出按数字值从小到大排序的前3个数字,再转为String后排序,最后输出结果即可

题解

java 复制代码
package hwod;

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

public class TheMinNum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] nums = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
        System.out.println(theMinNum(nums));
    }

    private static String theMinNum(int[] nums) {
        List<Integer> list = Arrays.stream(nums).boxed()
                .sorted().limit(3)
                .sorted(Comparator.comparing(String::valueOf))
                .collect(Collectors.toList());
        StringBuilder sb = new StringBuilder();
        for (Integer integer : list) {
            sb.append(integer);
        }
        return sb.toString();
    }
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

相关推荐
君不见,青丝成雪26 分钟前
SpringBoot项目占用内存优化
java·spring boot·后端
一叶飘零_sweeeet37 分钟前
如何避免MyBatis二级缓存中的脏读
java·redis·mybatis
Trust yourself2431 小时前
IDEA控制台乱码(Tomcat)解决方法
java·tomcat·intellij-idea
##学无止境##1 小时前
解锁Java分布式魔法:CAP与BASE的奇幻冒险
java·开发语言·分布式
3Cloudream1 小时前
互联网大厂Java面试深度解析:从基础到微服务云原生的全场景模拟
java·spring boot·redis·elasticsearch·微服务·kafka·电商架构
想买CT5的小曹1 小时前
SpringBoot如何获取系统Controller名称和方法名称
java·spring boot·后端
叫我阿柒啊1 小时前
Java全栈开发工程师的面试实战:从基础到微服务
java·数据库·spring boot·微服务·node.js·vue3·全栈开发
九仞山2 小时前
LangChain4j入门一:LangChain4j简介及核心概念
java·ai·langchain·agents
岁忧2 小时前
(LeetCode 每日一题) 498. 对角线遍历 (矩阵、模拟)
java·c++·算法·leetcode·矩阵·go
做一位快乐的码农2 小时前
基于Spring Boot的旅行足迹分享社区的设计与实现/基于java的在线论坛系统
java·开发语言·spring boot