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.
Here is an example of version numbers ordering:
0.1 < 1.1 < 1.2 < 13.37
int compareVersion(char* version1, char* version2) {
int i = 0, j = 0, m, n;
int i1, i2;
char v1[1000], v2[1000];
/* turn a level string of the version into number in every iteration */
while(1){
m = i;
while(version1[i] != '.' && version1[i] != '\0'){
i++;
}
if(i == m){
i1 = 0;
}else{
memcpy(v1, version1 + m, i - m);
v1[i - m] = '\0';
i1 = atoi(v1);
}
n = j;
while(version2[j] != '.' && version2[j] != '\0'){
j++;
}
if(j == n){
i2 = 0;
}else{
memcpy(v2, version2 + n, j - n);
v2[j - n] = '\0';
i2 = atoi(v2);
}
if(i1 > i2)
return 1;
else if(i1 < i2)
return -1;
else{
if(version1[i] == '\0' && version2[j] == '\0')
return 0;
else if(version1[i] != '\0' && version2[j] == '\0')
i++;
else if(version1[i] == '\0' && version2[j] != '\0')
j++;
else{
i++;
j++;
}
}
}
}