// Time:  O(n)
// Space: O(1)

class Solution {
public:
    int compareVersion(string version1, string version2) {
        const int n1 = version1.length(), n2 = version2.length();
        for (int i = 0, j = 0; i < n1 || j < n2; ++i, ++j) {
            int v1 = 0, v2 = 0;
            while (i < n1 && version1[i] != '.') {
                v1 = v1 * 10 + version1[i++] - '0';
            }
            while (j < n2 && version2[j] != '.') {
                v2 = v2 * 10 + version2[j++] - '0';
            }
            if (v1 != v2) {
                return v1 > v2 ? 1 : -1;
            }
        }
        return 0;
    }
};