165. Compare Version Numbers
Given two version strings, version1
and version2
, compare them. A version string consists of revisions separated by dots '.'
. The value of the revision is its integer conversion ignoring leading zeros.
To compare version strings, compare their revision values in left-to-right order. If one of the version strings has fewer revisions, treat the missing revision values as 0
.
Return the following:
- If
version1 < version2
, return -1. - If
version1 > version2
, return 1. - Otherwise, return 0.
Example 1:
Input: version1 = "1.2", version2 = "1.10"
Output: -1
Explanation:
version1's second revision is "2" and version2's second revision is "10": 2 < 10, so version1 < version2.
Example 2:
Input: version1 = "1.01", version2 = "1.001"
Output: 0
Explanation:
Ignoring leading zeroes, both "01" and "001" represent the same integer "1".
Example 3:
Input: version1 = "1.0", version2 = "1.0.0.0"
Output: 0
Explanation:
version1 has less revisions, which means every missing revision are treated as "0".
Constraints:
1 <= version1.length, version2.length <= 500
version1
andversion2
only contain digits and'.'
.version1
andversion2
are valid version numbers.- All the given revisions in
version1
andversion2
can be stored in a 32-bit integer.
Solution:
class Solution {
public int compareVersion(String version1, String version2) {
String[] nums1 = version1.split("\\.");
String[] nums2 = version2.split("\\.");
int n = nums1.length;
int m = nums2.length;
int v1 = 0;
int v2 = 0;
for (int i = 0; i < Math.max(n, m); i++){
if (i < n){
v1 = Integer.parseInt(nums1[i]);
}else{
v1 = 0;
}
if (i < m){
v2 = Integer.parseInt(nums2[i]);
}else{
v2 = 0;
}
if (v1 < v2){
return -1;
}else if (v1 > v2){
return 1;
}
}
return 0;
}
}
// TC: O(n)
// SC: O(n)