一面 1、中mysql数据库和表设计

笔试题

比较两个版本大小

用例1:

"8.7.0.8";
"8.7.10.0";
第二个版本大

用例2:

"8.7.10";
"8.7.10.0";
相等

用例3:

"8.7.11";
"8.7.10.0";
第一个版本大
public static void main(String[] args) {
        String v1 = "8.7.0.8";
        String v2 = "8.7.10.0";
        System.out.println(versionCompare(v1,v2));
    }
    public static int versionCompare(String v1,String v2){
        //版本号比较,v1 大于 v2:返回正数,v1 等于 v2:返回0,v1 小于v2 ,返回负数
        //note:字符串按照“.”切割,要记得特殊字符转译“\\.”
        List<Integer> v1IntList =  Arrays.stream(v1.split("\\.")).map(Integer::valueOf).collect(Collectors.toList());
        List<Integer> v2IntList  = Arrays.stream(v2.split("\\.")).map(Integer::valueOf).collect(Collectors.toList());
        int i = 0;
        while(i < v1IntList.size() && i < v2IntList.size()){
            int temp1 =  v1IntList.get(i);
            int temp2 = v2IntList.get(i);
            if(temp1 > temp2){
                return 1;
            }else if(temp1 < temp2){
                return -1;
            }else{
                i++;
            }
        }
        while(i < v1IntList.size()){
             int temp = v1IntList.get(i);
             if(temp!=0){
                 return 1;
             }
        }
        while(i < v2IntList.size()){
            int temp = v2IntList.get(i);
            if(temp!=0){
                return -1;
            }
        }
        return 0;
    }