输入描述:
第一行n>0是一个正整数,表示一共有n个输入。以后每行是一个非负整数,共有n行。
输出描述:
n个输入的非负整数连接成的最大的数
输入例子1:
6
9
8
7
65
4
3
输出例子1:
9876543
输入例子2:
2
11
2
输出例子2:
211
python3实现代代码:
while True:
try:
num1 = int(input())
num2 = []
for i in range(num1):
num2.append(str(input()))
num2.sort(reverse =True)
for i in range(len(num2)-1):
if(num2[i]+num2[i+1] < num2[i+1]+num2[i]):
num2[i],num2[i+1] = num2[i+1],num2[i]
result = ''.join(num2)
while (len(result)>1 and result[0]=='0'):
result= result[1:]
print(result)
except:
break
结果:
输入1:
5
9
8
7
65
4
结果1:
987654
输入2
2
11
2
结果2:
211
使用JAVA实现一下:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int num1 = sc.nextInt();
String [] str = new String [num1];
for(int i = 0; i<num1;i++){
str[i] = sc.next();
}
for(int i = str.length-1;i>0;i--){
for(int j = 0;j<i;j++){
if(str[j].compareTo(str[j+1])<0) {
String temp = str[j];
str[j] = str[j + 1];
str[j + 1] = temp;
}
}
}
for(int i = 0 ;i<str.length-1;i++){
if((str[i]+str[i+1]).compareTo(str[i+1]+str[i])<0){
String temp =str[i];
str[i] = str[i+1];
str[i+1] = temp;
}
}
String result = "";
for(String s :str){
result += s ;
}
//方法一去除一个字符串中的0的个数
if (result.length()>1 && result.charAt(0)=='0'){
result = Integer.toString(Integer.parseInt(result));
}
//方法二去除字符前面的0
// while (result.length()>1 && result.charAt(0)=='0'){
// result = result.replaceFirst("0","");
// }
System.out.println(result);
}
}
}