版本號排序


題目

輸入一行,輸出最小版本

示例

輸入 2.4 2.10.3 5.4.6 7.6.5.4 3.2.12.12 1.4.5 1.10.8
輸出 1.4.5

輸入 5.6.7 4.3.1 7.8.4 5.10 3.4.4.4 3.4 4.7.0
輸出 3.4

思路

先對輸入的各個版本號進行排序,Arrays.sort();
第一位版本號的第一個數字,是最小版本的首位數字,據此可以排除一些不必要的循環判斷。
對於首位相同的版本號,進行第二位以及其余位的判斷。

代碼

import java.util.*;

public class Main {


    public static void main(String[] args) {
       Scanner in =new Scanner(System.in);
       while(in.hasNext()) {
           String str = in.nextLine();
           String[] split = str.split("\\s");
           // 字典序排列  從小到大
           Arrays.sort(split);
           // 最小版本起始
           int min = Integer.parseInt(split[0].split("\\.")[0]);
           int index = 0;
           for(int i=0;i<split.length;i++) {
               if(min == Integer.parseInt(split[i].split("\\.")[0])) {
                   boolean flag = isMin(split[index], split[i]);
                    // flag == false  說明當前版本數字大
                   if(!flag) {
                       index = i;
                   }
               }
           }
           System.out.println(split[index]);

       }
    }

    public static boolean isMin(String one,String two) {
        String[] list1 = one.split("\\.");
        String[] list2 = two.split("\\.");
        int min = list1.length<list2.length ? list1.length:list2.length;
        for(int i=0;i<min;i++) {
            if(Integer.parseInt(list1[i]) < Integer.parseInt(list2[i])) {
                return true;
            }else if(Integer.parseInt(list1[i]) > Integer.parseInt(list2[i])){
                return false;
            }
        }
        if(list1.length <= list2.length) {
            return true;
        }else {
            return false;
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM