题目:比较版本号

这题的核心是:以每一个‘.‘作为分界线,将 string 转换为 int,逐段进行比较,如果相同,就进入下一段进行比较;如果不同,则根据数值的大小选择返回值

compareVersion()

 1int compareVersion(string version1, string version2)
 2{
 3    // 定义两个版本各自的指针
 4    int i = 0, j = 0;
 5    int n1 = version1.size(), n2 = version2.size();
 6
 7    while(i < n1 || j < n2)
 8    {
 9        int num1 = 0, num2 = 0;
10
11        // 将 v1 转化为 int,直到遇到’.‘
12        while(i < n1 && version1[i] != '.')
13        {
14            num1 = num1 * 10 + (version1[i] - '0');
15            i++;
16        }
17        // 将 v2 转化为 int,直到遇到’.‘
18        while(j < n2 && version2[j] != '.')
19        {
20            num2 = num2 * 10 + (version2[j] - '0');
21            j++;
22        }
23
24        // 如果不等,直接返回
25        if(num1 != num2)
26        {
27            return num1 < num2 ? -1 : 1;
28        }
29
30        // 跳过’.'并进入下一段
31        i++;
32        j++;
33    }
34    // 如果在 while 循环中没有返回
35    // 就说明两个版本号相同
36    return 0;
37}

来源:语雀原笔记