LeetCode Solutions
165. Compare Version Numbers
Time: $O(n)$ Space: $O(1)$
class Solution {
public:
int compareVersion(string version1, string version2) {
istringstream iss1(version1);
istringstream iss2(version2);
int v1;
int v2;
char dotChar;
while (bool(iss1 >> v1) + bool(iss2 >> v2)) {
if (v1 < v2)
return -1;
if (v1 > v2)
return 1;
iss1 >> dotChar;
iss2 >> dotChar;
v1 = 0;
v2 = 0;
}
return 0;
};
};
class Solution {
public int compareVersion(String version1, String version2) {
final String[] levels1 = version1.split("\\.");
final String[] levels2 = version2.split("\\.");
final int length = Math.max(levels1.length, levels2.length);
for (int i = 0; i < length; ++i) {
final Integer v1 = i < levels1.length ? Integer.parseInt(levels1[i]) : 0;
final Integer v2 = i < levels2.length ? Integer.parseInt(levels2[i]) : 0;
final int compare = v1.compareTo(v2);
if (compare != 0)
return compare;
}
return 0;
}
}
class Solution:
def compareVersion(self, version1: str, version2: str) -> int:
levels1 = version1.split('.')
levels2 = version2.split('.')
length = max(len(levels1), len(levels2))
for i in range(length):
v1 = int(levels1[i]) if i < len(levels1) else 0
v2 = int(levels2[i]) if i < len(levels2) else 0
if v1 < v2:
return -1
if v1 > v2:
return 1
return 0