LeetCode 165

https://leetcode.cn/problems/compare-version-numbers/description/

难度:中等

使用两个指针,遍历两个字符串,直到找到’.’,将每一段的版本号转换为整数,比较两个整数是否相等。整数初始化为 0,以处理这一段版本号缺失的情况。

时间复杂度:O(n+m),其中 m 是字符串 version1 的长度,n 是字符串 version2 的长度。

空间复杂度:O(1),我们只需要常数的空间保存若干变量。

class Solution {
public:
    int compareVersion(string version1, string version2) {
        int m = version1.size(), n = version2.size();
        int i = 0, j = 0;
        while (i < m || j < n) {
            long long x = 0;
            for (; i < m && version1[i] != '.'; i++) {
                x = x * 10 + version1[i] - '0';
            }
            i++;
            long long y = 0;
            for (; j < n && version2[j] != '.'; j++) {
                y = y * 10 + version2[j] - '0';
            }
            j++;
            if (x != y) {
                return x > y ? 1 : -1;
            }
        }
        return 0;
    }
};