Compare Version Numbers

Compare two version numbers version1 and version2.

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 < 1.13 < 1.13.4

Method:

Be careful of the case of comparing 1.0.0 and 1, it should return 0.

Solution:

Time: O(m + n)
Space: O(m + n)

import java.math.BigInteger;

public class Solution {
    public int compareVersion(String A, String B) {
        String[] a = A.split("\\.");
        String[] b = B.split("\\.");
        int len = Math.min(a.length, b.length);
        for (int i = 0; i < len; i ++) {
            BigInteger aVal = new BigInteger(a[i]);
            BigInteger bVal = new BigInteger(b[i]);
            int compare = aVal.compareTo(bVal);
            if (compare != 0) {
                return compare;
            }
        }
        if (a.length < b.length) {
            for (int i = len; i < b.length; i ++) {
                BigInteger bVal = new BigInteger(b[i]);
                if (!bVal.equals(BigInteger.ZERO)) {
                    return -1;   
                }
            }
            return 0;
        } else if (a.length > b.length) {
            for (int i = len; i < a.length; i ++) {
                BigInteger aVal = new BigInteger(a[i]);
                if (!aVal.equals(BigInteger.ZERO)) {
                    return -1;   
                }
            }
            return 0;
        } else {
            return 0;
        }
    }
}