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)