1. 程式人生 > >JAVA:字串的字典排序

JAVA:字串的字典排序

題目:給定n個字串,對n個字串按照字典排序。



思路:可以將字串讀入ArrayList中,然後重寫Collection中sort方法的compare函式。因為本題是String型別,也可以直接呼叫Collection.sort(list)來達到這個目的。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()) {
            int n= scanner.nextInt();
            List<String> list=new ArrayList<>();
            for(int i=0;i<n;i++) {
                String s = scanner.next();
                 list.add(s);
            }
            Collections.sort(list, new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    char[] chars1=o1.toCharArray();
                    char[] chars2=o2.toCharArray();
                    int i=0;
                    while(i<chars1.length && i<chars2.length){
                        if(chars1[i]>chars2[i]){
                            return 1;
                        }else if(chars1[i]<chars2[i]){
                            return -1;
                        }else{
                            i++;
                        }
                    }
                    if(i==chars1.length){  //o1到頭
                        return -1;
                    }
                    if(i== chars2.length){ //o2到頭
                        return 1;
                    }
                    return 0;
                }
            });
            for(String s:list){
                System.out.println(s);
            }
        }
    }
}
其中,
Collections.sort(list, new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    char[] chars1=o1.toCharArray();
                    char[] chars2=o2.toCharArray();
                    int i=0;
                    while(i<chars1.length && i<chars2.length){
                        if(chars1[i]>chars2[i]){
                            return 1;
                        }else if(chars1[i]<chars2[i]){
                            return -1;
                        }else{
                            i++;
                        }
                    }
                    if(i==chars1.length){  //o1到頭
                        return -1;
                    }
                    if(i== chars2.length){ //o2到頭
                        return 1;
                    }
                    return 0;
                }
            });

完全可以由下面代替:

Collections.sort(list);