字符比较,注意点:当两行的sum一样的时候(sum即题目中的每一行的反演总次数)要注意代码中最后一个循环里的break;这里用了比较笨的方法~下面是代码。 import java.util.Arrays; import java.util.Scanner; public class Main{ public static void main(String[] args)throws Exception{ Scanner cin=new Scanner(System.in); int lettersNum=cin.nextInt(); int caseNum=cin.nextInt(); int[] sum=new int[caseNum]; int[] temp=new int[caseNum]; String[] Str=new String[caseNum]; for(int k=0;k<caseNum;k++){ Str[k]=cin.next(); sum[k]=0;temp[k]=0; char[] c=Str[k].toCharArray(); for(int i=0;i<lettersNum;i++){ for(int j=i+1;j<lettersNum;j++){ if((int)c[i]>(int)c[j]){sum[k]++;temp[k]++; } } } } } Arrays.sort(temp); for(int i=0;i<caseNum;i++){ for(int j=0;j<caseNum;j++){ if(temp[i]==sum[j]){System.out.println(Str[j]);break;} } } }