题目描述
题目描述
给定n个字符串,请对n个字符串按照字典序排列。
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
想法
一道华为机考题;如果使用 Java 语言的话,可以重写compare方法即可;记录此题是想解决一直以来对于 comparator中comapre方法重写规则的不了解。借助此题彻底弄清楚。
如果返回的值 > 0;那么会将前一个数与后一个进行对调;进行升序;
如果 < 0;说明前一个数字小于后一个;
如果等于 0 说明两者相等、
代码
import java.util.*;
public class Main{
static Scanner sc = new Scanner(System.in);
public static void main(String[] args){
int n = sc.nextInt();
String[] s = new String[n];
for(int i=0; i<n; i++){
s[i] = sc.next();
}
// 也可以用一个List装数据;那么重写Collections 的 compare方法即可。
Arrays.sort(s,new Comparator<String>(){
@Override
public int compare(String o1,String o2){
char[] c1 = o1.toCharArray();
char[] c2 = o2.toCharArray();
int i=0;
while(i<c1.length && i<c2.length){
if(c1[i] < c2[i]){
return -1;
}else if(c1[i] > c2[i]){
return 1;
}else{
i++;
}
}
if(i == c1.length){
return -1;
}
if(i == c2.length){
return 1;
}
return 0;
}
});
for(String s1 : s){
System.out.println(s1);
}
}
}