题目描述
设有nn个正整数(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3n=3时,33个整数1313,312312,343343联接成的最大整数为:3433121334331213
又如:n=4n=4时,44个整数77,1313,44,246246联接成的最大整数为:74246137424613
输入格式
第一行,一个正整数nn。
第二行,nn个正整数。
输出格式
一个正整数,表示最大的整数
输入输出样例
输入 #1复制
3
13 312 343
输出 #1复制
34331213
解:
- 输入int改为String类型
- 两个for循环,当S[i]+S[j] < S[j] + S[i] 时交换(比较哪个在前值大)S[j]和S[i],这样的交换将较小的放在了后面。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
for(int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
String[] s = new String[n];
String ans = "";
for(int i = 0; i < n; i++) {
s[i] = nums[i] + "";
}
for(int i = 0; i < n - 1; i++) {
for(int j = i + 1; j < n; j++) {
if((s[j] + s[i]).compareTo(s[i] + s[j]) < 0) {
String temp = s[j];
s[j] = s[i];
s[i] = temp;
}
}
}
for(int i = n - 1; i >= 0; i--) {
ans += s[i];
}
System.out.println(ans);
}
}