165 - Compare Version Numbers
Written on November 5, 2015
Tweet
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.
public class Solution {
public int compareVersion(String version1, String version2) {
int i = 0, j = 0;
while (i < version1.length() || j < version2.length()) {
int temp1 = 0, temp2 = 0;
while (i < version1.length() && version1.charAt(i) != '.') {
temp1 = temp1 * 10 + (version1.charAt(i++) - '0');
}
while (j < version2.length() && version2.charAt(j) != '.') {
temp2 = temp2 * 10 + (version2.charAt(j++) - '0');
}
if (temp1 > temp2) {
return 1;
} else if (temp1 < temp2) {
return -1;
} else {
i ++;
j ++;
}
}
return 0;
}
}
class Solution(object):
def compareVersion(self, version1, version2):
"""
:type version1: str
:type version2: str
:rtype: int
"""
if not version1 or not version2:
return 0
i = j = 0
while i < len(version1) or j < len(version2):
num1 = num2 = 0
while i < len(version1) and version1[i] != '.':
num1 = num1 * 10 + int(version1[i])
i += 1
while j < len(version2) and version2[j] != '.':
num2 = num2 * 10 + int(version2[j])
j += 1
if num1 > num2:
return 1
elif num1 < num2:
return -1
else:
i += 1
j += 1
return 0