Compare numbers version1 and version1.
If version1 > version2 return 1, if version1 < version2 return-1, otherwise ret Urn 0.
Assume that the version strings is non-empty and contain only digits and the.Character.
The.Character does not represent a decimal point and was used to separate number sequences.
For instance,2.5is not "both and a half" or "half-to-version three", it is the fifth Second-level revision of the second first-level re Vision.
Here are an example of version numbers ordering:
0.1 < 1.1 < 1.2 < 13.37
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
#include <stdio.h> #include <string.h>int compareversion (char *version1, char *version2) {int I, j, K, dat A1 = 0, data2 = 0; for (i = 0,j = 0; version1[i]! = ' version2[j ' && version2[j]! = ' ';) {if (version1[i] = = '. ' &&] == '.') {if (Data1 > Data2) return 1; if (Data1 < data2) return-1; data1 = 0; data2 = 0; i++; j + +; } else if (version1[i]! = '. ' && version2[j] = = '. ') {while (version1[i]! = '. ' && version1[i]! = ' + ') {data1 = data1*10 + version1[i]-' 0 '; i++; } if (version1[i]== ') break; } else if (version1[i] = = '. ' && version2[j]! = '. ') {while (version2[j]! = '. ' && version2[j]! = ' + ') {data2 = data2*10 + version2[j]-' 0 '; j + +; } if (version2[j]== ') break; } else{ Data1 = data1*10 + version1[i]-' 0 '; Data2 = data2*10 + version2[j]-' 0 '; i++; j + +; }} if (version1[i] = = ' && version2[j]! = ' \ ") {if (version2[j] = = '. ') {k=j+1; if (Data1 > Data2) return 1; if (Data1 < data2) return-1; if (data1 = = data2) data1 = 0; } else k=j; if (version2[k-1] = = '. ') data2 = 0; while (version2[k]! = ' ' && version2[k]! = '. ') {data2 = data2*10 + version2[k]-' 0 '; k++; }} else if (version1[i]! = ' \ "&& version2[j] = = ' + ') {if (version1[i] = = '. ') {k=i+1; if (Data1 > Data2) return 1; if (Data1 < data2) return-1; if (data1 = = data2) data2 = 0; } else k=i; if (version1[k-1] = = '. ') data1 = 0; while (version1[k]! = ' ' && version1[k]! = '. ') {data1 = data1*10 + version1[k]-' 0 '; k++; }} if (Data1 > Data2) return 1; if (Data1 < data2) return-1; if (data1 = = data2) return 0;} void Main () {printf ("%d\n", Compareversion ("1.0", "13.37"));}
Compare Version Numbers