# 165 Compare Version Numbers

165 Compare Version Numbers

#### Problem:

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
```

#### Thoughts:

The very first trick is to split the String by “.” into tokens.

Then compare two array until reach the end or already has a winner.

The purpose of this problem is on figuring out all different cases, including edge cases.

You don’t know how many levels in total for a version number. So 1.3.2.4.5.6 is also possible, it’s not common in practical world, but it’s a valid version number in this problem.

Also. you could have ending 0, e.g. 1.0 and 1. Remember to use the escape for the “.”, which is “\\.” in regex in Java.

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ugopireddy.gitbook.io/leet-code-solutions/solutions_151_-_200/165-compare-version-numbers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
