这道题用一个排序来处理这个String数组。
排序不是比较大小,而是比较两个String前后不同排列的大小。
比如21和211,要是用大小排序的话组合数来的数为21121,这样并不如21211大,所以要用两个String不同位置的大小比较进行排序。
import java.math.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.*;
public class Main {
public static void main(String args[])throws IOException
{
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
Scanner input = new Scanner(System.in);
int n = input.nextInt();
String a[] = new String[n];
for(int i=0;i<n;i++)
{
a[i] = input.next();
}
String temp;
for(int i=0;i<n-1;i++)
{
for(int k=0;k<n-1-i;k++)
{
if((a[k]+a[k+1]).compareTo(a[k+1]+a[k])>0)
{
temp = a[k];
a[k] = a[k+1];
a[k+1] = temp;
}
}
}
for(int i=n-1;i>=0;i--)
{
System.out.print(a[i]);
}
}
}
京公网安备 11010502036488号