比较版本号(iHandy校招笔试编程题)

示例 1:

输入: version1 = "0.1", version2 = "1.1"
输出: -1
示例 2:

输入: version1 = "1.0.1", version2 = "1"
输出: 1
示例 3:

输入: version1 = "7.5.2.4", version2 = "7.5.3"
输出: -1
示例 4:

输入:version1 = "1.01", version2 = "1.001"
输出:0
解释:忽略前导零,“01” 和 “001” 表示相同的数字 “1”。
示例 5:

输入:version1 = "1.0", version2 = "1.0.0"
输出:0
解释:version1 没有第三级修订号,这意味着它的第三级修订号默认为 “0”

  public int compareVersion(String version1, String version2) {
        String[] a1 = version1.split("\\.");
        String[] a2 = version2.split("\\.");

        for(int n = 0; n < Math.max(a1.length, a2.length); n++){
            int i = (n < a1.length ? Integer.valueOf(a1[n]) : 0);
            int j = (n < a2.length ? Integer.valueOf(a2[n]) : 0);
            if(i < j) return -1;
            else if(i > j) return 1;
        }
        return 0;  
    }

 精简版

需要注意的是 短的String要有补0操作

1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“a=1 and b =2 or c=3”,把三个都分隔出来,可以用String.split("and|or");
split分隔符总结
1.字符"|",   "*"  ,  "+"  , "." 得加上转义字符,前面加上"\\"。
2.而如果是"\",那么就得写成"\\\\"(4个)。
3.如果一个字符串中有多个分隔符,可以用"|"作为连字符。

摘自 https://www.cnblogs.com/ylht/p/10249543.html

 

关于split()方法,https://blog.csdn.net/qq_41785135/article/details/82840626 写的非常详细,概括起来

String[] split(String regex,int limit)  根据给定正则表达式的匹配拆分此字符串。

默认的方法中 limit=0,会执行切割无限次并且去掉该数组最后的所有空字符串

limit > 0 则会切割 不大于limit次,切割按照从左到右进行

limit < 0 则无限次,但是会保留所有的空字符串

 

 

你可能感兴趣的:(LeetCode)