 # Compare Version Numbers

#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.

Example 1:

```Input: `version1` = "0.1", `version2` = "1.1"
Output: -1```

Example 2:

```Input: `version1` = "1.0.1", `version2` = "1"
Output: 1```

Example 3:

```Input: `version1` = "7.5.2.4", `version2` = "7.5.3"
Output: -1```

#2

The below solution splits the string based on the `.`, and then compare each string value. If one version is longer than the other, we use `0` to compare.

The time complexity is `O(n)` where `n` is the length of the larger version. Space complexity is `O(m+n)` to store the version split in arrays.

``````class Solution {
public int compareVersion(String version1, String version2) {
String[] v1 = version1.split("\\.");
String[] v2 = version2.split("\\.");

int length = Math.max(v1.length, v2.length);
for(int i=0;i<length;i++){
Integer val1 = i<v1.length?Integer.parseInt(v1[i]):0;
Integer val2 = i<v2.length?Integer.parseInt(v2[i]):0;
int diff = val1.compareTo(val2);
if(diff!=0){
return diff;
}
}

return 0;
}
}
``````