Leetcode - Compare Version Numbers
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)
评论 (0)