# Leetcode - Compare Version Numbers

violet posted @ Jun 03, 2020 07:15:54 AM in 算法 with tags Algorithm Golang array string , 302 阅读

https://leetcode.com/problems/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```

```func compareVersion(version1 string, version2 string) int {
v1 := strings.Split(version1, ".")
v2 := strings.Split(version2, ".")

i := 0
j := 0
for i < len(v1) && j < len(v2) {
num1, _ := strconv.Atoi(v1[i])
num2, _ := strconv.Atoi(v2[j])

if num1 > num2 {
return 1
} else if num1 < num2 {
return -1
}
i++
j++
}
num1 := 0
for i < len(v1) {
tmp, _ := strconv.Atoi(v1[i])
num1 += tmp
i++
}
num2 := 0
for j < len(v2) {
tmp, _ := strconv.Atoi(v2[j])
num2 += tmp
j++
}
if num1 > num2 {
return 1
} else if num1 < num2 {
return -1
}
return 0
}```

time complexity: O(n)

(输入验证码)
or Ctrl+Enter