算法篇(Java)——输出整数数组中的数字拼接后的最小数
题目eg如下:

针对这类问题的分析有:
1、找到数字拼接后的最小数,肯定会涉及到排序问题
2、需要数字要实现拼接,肯定会有数组或者集合的遍历
我是社会哥,人狠话不多,直接上代码:
方法一:采用双重for循环

方法二:使用集合工具类:

初始数组如下:

运行结果如下:

具体可粘贴代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
int[] numbers = { 12, 5, 69, 100, 687, 1, 500, 44, 11, 5, 9 };
String sOne = printMinNumberOne(numbers);
String sTwo = printMinNumbeTwo(numbers);
System.out.println(sOne);
System.out.println(sTwo);
}
public static String printMinNumberOne(int [] numbers) {
String str = "";
for (int i=0; i<numbers.length; i++){
for (int j=i+1; j<numbers.length; j++){
int a = Integer.valueOf(numbers[i] + "" + numbers[j]);// 精华,需要想清楚
int b = Integer.valueOf(numbers[j] + "" + numbers[i]);// 精华,需要想清楚
if (a > b) {
int t = numbers[i];
numbers[i] = numbers[j];
numbers[j] = t;
}
}
}
for (int i = 0; i < numbers.length; i++) {
str += String.valueOf(numbers[i]);
}
return str;
}
public static String printMinNumbeTwo(int[] numbers) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < numbers.length; i++) {
list.add(numbers[i]);
}
Collections.sort(list, new Comparator<Integer>() {
public int compare(Integer i1, Integer i2) {
String s1 = i1 + "" + i2; // 精华,需要想清楚
String s2 = i2+ "" + i1; // 精华,需要想清楚
return s1.compareTo(s2);
}
});
StringBuffer sb = new StringBuffer("");
for (int i : list) {
sb.append(i);
}
return sb.toString();
}
}
结束了,谢谢查看

浙公网安备 33010602011771号