Java教程

java题目 数组组成的最小数字

本文主要是介绍java题目 数组组成的最小数字,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

数组组成的最小数字

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

输入描述:

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

输出描述:

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

示例1

输入

 
1 21,30,62,5,31

输出

 
1 21305

说明

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

示例2

输入

 
1 5,21

输出

 
1 215

说明

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

 
import java.util.*;

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

            int n = split.length;
            int[] arr= new int[n];
            for(int i=0; i<n; i++)
                arr[i] = Integer.parseInt(split[i]);
            Arrays.sort(arr);
            
            // 如果超过3个数,取最小的三个即可
            if(n>3)
                arr = Arrays.copyOf(arr, 3);
            
            //新建最小组合
            String min = printMin(arr);
            System.out.println(min);
        }
    }
    
    public static String printMin(int[] arr) {
        if(arr == null || arr.length ==0)
            return "";
        String[] s = new String[arr.length];
        for(int i=0; i<arr.length; i++)
            s[i] = arr[i] + "";
        Arrays.sort(s,(o1, o2) -> (o1+o2).compareTo(o2+o1));
        
        StringBuilder sb = new StringBuilder();
        for(String st : s)
            sb.append(st);
        
        String res = sb.toString();
        return res;
    }
}

 

这篇关于java题目 数组组成的最小数字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!