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

You may assume the default revision number for each level of a version number to be 0. 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 0.

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

Example 4:

```Input: version1 = "1.01", version2 = "1.001"
Output: 0
Explanation: Ignoring leading zeroes, both “01” and “001" represent the same number “1”```

Example 5:

```Input: version1 = "1.0", version2 = "1.0.0"
Output: 0
Explanation: 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.```

Runtime: 1 ms, faster than 89.87% of Java online submissions for Compare Version Numbers.

Memory Usage: 33.1 MB, less than 100.00% of Java online submissions for Compare Version Numbers.

```class Solution {
public int compareVersion(String version1, String version2) {
String[] vs1 = version1.split("//.");
String[] vs2 = version2.split("//.");
for (int i = 0; i < Math.max(vs1.length, vs2.length); i++) {
int i1 = i < vs1.length ? Integer.parseInt(vs1[i]) : 0;
int i2 = i < vs2.length ? Integer.parseInt(vs2[i]) : 0;
if (i1 - i2 > 0) {
return 1;
}
if (i1 - i2 < 0) {
return -1;
}
}

return 0;
}
}```

https://segmentfault.com/a/1190000018147989

PS：推荐一个微信公众号: askHarries 或者qq群：474807195，里面会分享一些资深架构师录制的视频录像：有Spring，MyBatis，Netty源码分析，高并发、高性能、分布式、微服务架构的原理，JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源，目前受益良多 