Leetcode 165: Compare Version Numbers

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

Solution:

Attention: The version string may have multiple "."

Split the two strings and convert them to int arrays. Then compare the ints at the same index. If one array is longer than the other, check whether the rest elements in the longer array equal to 0. If they are all 0s, the two versions are the same, return 0. If any of them does not equal to 0, the longer version is greater.

public class Solution {
    public int compareVersion(String version1, String version2) {
        
        String[] v1 = version1.split("\\.");
        String[] v2 = version2.split("\\.");
        int[] nums1 = new int[v1.length];
        int[] nums2 = new int[v2.length];
        
        for (int i = 0; i < v1.length; i++) {
            nums1[i] = Integer.parseInt(v1[i]);
        }
        for (int i = 0; i < v2.length; i++) {
            nums2[i] = Integer.parseInt(v2[i]);
        }
        
        int i = 0;
        for (;i < nums1.length && i < nums2.length; i++) {
            if (nums1[i] > nums2[i]) {
                return 1;
            } else if (nums1[i] < nums2[i]) {
                return -1;
            }
        }
        
        for (;i < nums1.length; i++) {
            if (nums1[i] != 0) {
                return 1;
            }
        }
        for (;i < nums2.length; i++) {
            if (nums2[i] != 0) {
                return -1;
            }
        }
        return 0;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值