题目:比较版本号
这题的核心是:以每一个‘.‘作为分界线,将 string 转换为 int,逐段进行比较,如果相同,就进入下一段进行比较;如果不同,则根据数值的大小选择返回值
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}
来源:语雀原笔记