JAVA:字串的字典排序
阿新 • • 發佈:2019-01-02
題目:給定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);