βCompare Version Numbers
Using int for in-range numbers
int getRevision(const string &A, int &i) {
if(i >= A.size())
return 0;
int rev = 0;
while(i < A.size() && A[i] != '.') {
rev = rev * 10 + A[i] - '0';
i++;
}
return rev;
}
int Solution::compareVersion(string A, string B) {
int i = 0, j = 0;
// until both A and B are exhausted
while(i < A.size() || j < B.size()) {
int v1 = getRevision(A, i);
int v2 = getRevision(B, j);
if(v1 < v2)
return -1;
if(v1 > v2)
return 1;
i++, j++;
}
return 0;
}
Using Strings for large numbers
Last updated