-
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; /** * Created by etf on 2018/9/15. * 输入一个正整数数组,把数组里所有数字拼接起来排成一个数, * 打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321}, * 则打印出这三个数字能排成的最小数字为321323。 */ public class Solution32 { public String PrintMinNumber(int [] numbers) { List<Integer> list = Arrays.stream(numbers) .boxed().collect(Collectors.toList()); list.sort(new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { String s1 = String.valueOf(o1) + String.valueOf(o2); String s2 = String.valueOf(o2) + String.valueOf(o1); return s1.compareTo(s2); } }); StringBuilder result = new StringBuilder(); list.forEach(i -> result.append(i)); return result.toString(); } public String PrintMinNumber3(int [] numbers) { List<String> list = Arrays.stream(numbers) .boxed().collect(Collectors.toList()) .stream().map(x -> x+"").collect(Collectors.toList()); list.sort(new Comparator<String>() { public int compare(String o1, String o2) { String s1 = String.valueOf(o1) + String.valueOf(o2); String s2 = String.valueOf(o2) + String.valueOf(o1); return s1.compareTo(s2); } }); String result = list.stream().collect(Collectors.joining("")); return result; } }
转载于:https://my.oschina.net/u/3839325/blog/2051808