-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path165.cpp
More file actions
96 lines (91 loc) · 2.62 KB
/
165.cpp
File metadata and controls
96 lines (91 loc) · 2.62 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
//
// 165.cpp
// LeetCode
//
// Created by 张佐玮 on 15/7/26.
// Copyright (c) 2015年 JarvisZhang. All rights reserved.
//
// Title: Compare Version Numbers
//
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
int compareVersion(string version1, string version2) {
int start1 = 0, start2 = 0, end1 = 0, end2 = 0, subVersion1 = 0, subVersion2 = 0;
while (end1 < version1.size() && end2 < version2.size()) {
if (version1[end1] == '.' && version2[end2] == '.') {
if (subVersion1 == subVersion2) {
start1 = ++end1;
start2 = ++end2;
subVersion1 = 0;
subVersion2 = 0;
}
else {
return (subVersion1 > subVersion2) ? 1 : -1;
}
}
else {
if (version1[end1] != '.') {
subVersion1 *= 10;
subVersion1 += version1[end1++] - '0';
}
if (version2[end2] != '.') {
subVersion2 *= 10;
subVersion2 += version2[end2++] - '0';
}
}
}
while (end1 < version1.size()) {
if (version1[end1] != '.') {
subVersion1 *= 10;
subVersion1 += version1[end1++] - '0';
}
else if (subVersion1 == subVersion2){
end1++;
subVersion1 = 0;
subVersion2 = 0;
}
else {
return (subVersion1 > subVersion2) ? 1 : -1;
}
}
while (end2 < version2.size()) {
if (version2[end2] != '.') {
subVersion2 *= 10;
subVersion2 += version2[end2++] - '0';
}
else if (subVersion1 == subVersion2) {
end2++;
subVersion1 = 0;
subVersion2 = 0;
}
else {
return (subVersion1 > subVersion2) ? 1 : -1;
}
}
if (subVersion1 > subVersion2) {
return 1;
}
else if (subVersion1 < subVersion2) {
return -1;
}
else {
return 0;
}
}
};
class Test {
public:
void runTest(string version1, string version2) {
Solution solution;
cout << solution.compareVersion(version1, version2) << endl;
}
void sample() {
string a1("1.0"), b1("1");
string a2("1.9.9.9"), b2("1.10.0.0");
runTest(a1, b1);
runTest(a2, b2);
}
};