数组组成的最小数字
题目描述: 给定一个整型数组,请从该数组中选择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; } }