LeetCode(68)-Compare Version Numbers
LeetCode(68)-Compare Version Numbers
fengsehng 发表于1年前
LeetCode(68)-Compare Version Numbers
  • 发表于 1年前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

题目:

Compare two version numbers version1 and version2.
If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.

You may assume that the version strings are non-empty and contain only digits and the . character.
The . character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level
 revision of the second first-level revision.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37

思路:

  • 题意:比较两个版本号字符串的大小
  • 把字符串用split转化为数组,注意split(\.),然后转化为整数数组,遍历比较。注意如果版本号后面都是零的情况

代码:

public class Solution {
      public int compareVersion(String version1, String version2) {
        String[] v1,v2;
        if(version1.indexOf(".") == -1){
            v1 = new String[1];
            v1[0] = version1;
        }else{
             v1 = new String[version1.split("\\.").length];
             v1 = version1.split("\\.");
        }
        if(version2.indexOf(".") == -1){
            v2 = new String[1];
            v2[0] = version2;
        }else{
            v2 = new String[version2.split("\\.").length];
            v2 = version2.split("\\.");
        }
        int[] array1 = sToInt(v1);
        int[] array2 = sToInt(v2);
        int nn = Math.min(array1.length,array2.length);
        for(int a = 0;a < nn;a++){
            if(array1[a] > array2[a]){
                return 1;
            }else if(array1[a] < array2[a]){
                return -1;
            }
        }
        if(array1.length > array2.length){
            for(int k = nn; k < array1.length;k++){
                if(array1[k] != 0){
                    return 1;
                }
            }
            return 0;
        }else if(array1.length < array2.length){
            for(int m = nn;m < array2.length;m++){
                if(array2[m] != 0){
                    return -1;
                }
            }
            return 0;
        }
        return 0;
    }
    public int[] sToInt(String[] ss){
        int n = ss.length;
        int[] result = new int[n];
        for(int i = 0;i < n;i++){
            try{
                result[i] = Integer.parseInt(ss[i]);
            }catch(Exception e){

            }
        }
        return result;
    }
}
共有 人打赏支持
粉丝 4
博文 284
码字总数 214494
×
fengsehng
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: