0%

165. 比较版本号

165. 比较版本号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class Solution {
public:
int compareVersion(string version1, string version2) {
vector<int> v1;
vector<int> v2;
int vt = 0;
for(auto& ch : version1)
{
if(ch == '.')
{
v1.push_back(vt);
vt = 0;
}
else
{
vt = vt * 10 + ch - '0';
}
}
v1.push_back(vt);
while(!v1.empty() && v1.back() == 0)
v1.pop_back();
vt = 0;
for(auto& ch : version2)
{
if(ch == '.')
{
v2.push_back(vt);
vt = 0;
}
else
{
vt = vt * 10 + ch - '0';
}
}
v2.push_back(vt);
while(!v2.empty() && v2.back() == 0)
v2.pop_back();
int m = v1.size(), n = v2.size();
for(int i = 0; i < min(m, n); ++i)
{
if(v1[i] > v2[i])
return 1;
else if(v1[i] < v2[i])
return -1;
}
if(m > n)
return 1;
else if(m < n)
return -1;
return 0;
}
};
优化空间,分割过程中比较
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
int compareVersion(string version1, string version2) {
int i = 0, j = 0;
int m = version1.size(), n = version2.size();
while(i < m || j < n)
{
int x = 0;
while(i < m && version1[i] != '.')
x = x * 10 + version1[i++] - '0';
int y = 0;
while(j < n && version2[j] != '.')
y = y * 10 + version2[j++] - '0';
if(x != y)
return x > y ? 1 : -1;
++i;
++j;
}
return 0;
}
};