借鉴别的大佬的,提交的时候稍微有点错误,我稍微改了一下。
转载地址:java 蓝桥杯 拼数_//我是小白的博客-CSDN博客
他的错误案例:
6
321 32 407 135 13 217
个人微改:
import java.util.Scanner;
public class SpellTheNumber {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String arr[] = new String[n];
for(int i=0;i<arr.length;i++) {
arr[i] = sc.next();
}
String ans = "";
for(int i=0;i<arr.length;i++) {
for(int j=i+1;j<arr.length;j++) {
String max = max(arr[i],arr[j]);
String min = min(arr[i],arr[j]);
arr[i]=max;
arr[j]=min;
}
ans+=arr[i];
}
System.out.println(ans);
}
public static String max(String s1,String s2) {
int index = 0;
while(true) {
char c1 = s1.charAt(index);
char c2 = s2.charAt(index);
if(c1>c2)return s1;
if(c2>c1)return s2;
if(index!=s1.length()-1 && index!=s2.length()-1) {
index++;
}else {
if(index==s1.length()-1) {
c2 = s2.charAt(++index);
--index;
if(c1<=c2) {
return s2;
}else {
return s1;
}
}
if(index==s2.length()-1) {
c1 = s1.charAt(++index);
--index;
if(c1<=c2) {
return s2;
}else {
return s1;
}
}
}
}
}
public static String min(String s1,String s2) {
int index=0;
while (true) {
//循环截取
char c1=s1.charAt(index);
char c2=s2.charAt(index);
if(c1>c2)return s2;
if(c2>c1)return s1;
if(index!=s1.length()-1&&index!=s2.length()-1)
{
index++;
}else {
if(index==s1.length()-1) {
c2 = s2.charAt(++index);
--index;
if(c1<=c2) {
return s1;
}else {
return s2;
}
}
if(index==s2.length()-1) {
c1 = s1.charAt(++index);
--index;
if(c1<=c2) {
return s1;
}else {
return s2;
}
}
}
}
}
}