题解 | #字符串排序#
字符串排序
http://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723
- 输入待处理的字符数。使用sc.nextInt()的时候,记得要接受他输入的数字后面的换行
- 逐一将输入的字符串写入list集合中
- 重写list集合的排序规则 (1) 先逐一比较字符串每个字符的大小 (2) 如果都一样,则比较长度 (3) 如果长度相等,返回0,否则返回+1,-1
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int numbers = sc.nextInt();// 数量
String huanhan = sc.nextLine();
List<String> list = new ArrayList<>();// 可以重写比较方法,用来排序
for(int i = 0; i < numbers;i++){
list.add(sc.nextLine());
}
list.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// 先一个一个比较字符
int index = 0;
while(index < o1.length() && index < o2.length()){
if(o1.charAt(index) > o2.charAt(index)) return 1;
else if(o2.charAt(index) > o1.charAt(index)) return -1;
else index++;
}
if(o1.length() == o2.length()) return 0;// 如果字母和长度都相等,则返回0
else return o1.length() > o2.length()? 1 : -1;
}
});
// 输出list集合
for(String s : list){
System.out.println(s);
}
}
}
}