# How to Compare Version Numbers in Java

## The challenge

Compare two version numbers *version1* and *version2*.

If `<em>version1</em> > <em>version2</em>`

return `1;`

if `<em>version1</em> < <em>version2</em>`

return `-1;`

otherwise return “.

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.

You may assume the default revision number for each level of a version number to be `. For example, version number `3.4` has a revision number of `3` and `4` for its first and second level revision number. Its third and fourth level revision number are both `

.

**Example 1:**

Input:`= "0.1",`

version1`= "1.1"`

version2Output:-1

**Example 2:**

Input:`= "1.0.1",`

version1`= "1"`

version2Output:1

**Example 3:**

Input:`= "7.5.2.4",`

version1`= "7.5.3"`

version2Output:-1

**Example 4:**

Input:`= "1.01",`

version1`= "1.001"`

version2Output:0Explanation:Ignoring leading zeroes, both “01” and “001" represent the same number “1”

**Example 5:**

Input:`= "1.0",`

version1`= "1.0.0"`

version2Output:0Explanation:The first version number does not have a third level revision number, which means its third level revision number is default to "0"

**Note:**

- Version strings are composed of numeric strings separated by dots
`.`

and this numeric strings**may**have leading zeroes. - Version strings do not start or end with dots, and they will not be two consecutive dots.

## The solution in Java

```
class Solution {
public int compareVersion(String version1, String version2) {
String[] arr1 = version1.split("\\.");
String[] arr2 = version2.split("\\.");
int i=0;
while(i<arr1.length || i<arr2.length){
if(i<arr1.length && i<arr2.length){
if(Integer.parseInt(arr1[i]) < Integer.parseInt(arr2[i])) return -1;
else if(Integer.parseInt(arr1[i]) > Integer.parseInt(arr2[i])) return 1;
} else if(i<arr1.length){
if(Integer.parseInt(arr1[i]) != 0) return 1;
} else if(i<arr2.length){
if(Integer.parseInt(arr2[i]) != 0) return -1;
}
i++;
}
return 0;
}
}
```