Problem
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.
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
Solution
/**
* @param {string} version1
* @param {string} version2
* @return {number}
*/
var compareVersion = function(version1, version2) {
var v1 = version1.split('.');
var v2 = version2.split('.');
var len = Math.max(v1.length, v2.length);
var t1 = 0;
var t2 = 0;
for (var i = 0; i < len; i++) {
t1 = parseInt(v1[i] || 0);
t2 = parseInt(v2[i] || 0);
if (t1 > t2) return 1;
if (t1 < t2) return -1;
}
return 0;
};
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(1).