Skip to content

Commit ba83600

Browse files
committed
solve problem Compare Version Numbers
1 parent 78d8729 commit ba83600

File tree

5 files changed

+90
-0
lines changed

5 files changed

+90
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ All solutions will be accepted!
306306
|797|[All Paths From Source To Target](https://leetcode-cn.com/problems/all-paths-from-source-to-target/description/)|[java/py/js](./algorithms/AllPathsFromSourceToTarget)|Medium|
307307
|789|[Escape The Ghosts](https://leetcode-cn.com/problems/escape-the-ghosts/description/)|[java/py/js](./algorithms/EscapeTheGhosts)|Medium|
308308
|701|[Insert Into A Binary Search Tree](https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/description/)|[java/py/js](./algorithms/InsertIntoABinarySearchTree)|Medium|
309+
|165|[Compare Version Numbers](https://leetcode-cn.com/problems/compare-version-numbers/description/)|[java/py/js](./algorithms/CompareVersionNumbers)|Medium|
309310

310311
# Database
311312
|#|Title|Solution|Difficulty|
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Compare Version Numbers
2+
This problem is easy to solve
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public int compareVersion(String version1, String version2) {
3+
String[] version1Splits = version1.split("\\."),
4+
version2Splits = version2.split("\\.");
5+
int minLength = Math.min(version1Splits.length, version2Splits.length),
6+
maxLength = Math.max(version1Splits.length, version2Splits.length);
7+
8+
for (int i = 0; i < minLength; i++) {
9+
if (Integer.valueOf(version1Splits[i]) > Integer.valueOf(version2Splits[i]))
10+
return 1;
11+
else if (Integer.valueOf(version1Splits[i]) < Integer.valueOf(version2Splits[i]))
12+
return -1;
13+
}
14+
15+
if (minLength == maxLength)
16+
return 0;
17+
18+
String[] splits = version1Splits.length > version2Splits.length ? version1Splits : version2Splits;
19+
for (int i = minLength; i < maxLength; i++) {
20+
if (Integer.valueOf(splits[i]) > 0)
21+
return version1Splits.length > version2Splits.length ? 1 : -1;
22+
}
23+
24+
return 0;
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @param {string} version1
3+
* @param {string} version2
4+
* @return {number}
5+
*/
6+
var compareVersion = function(version1, version2) {
7+
let versions1 = version1.split('.').map(v => parseInt(v)),
8+
versions2 = version2.split('.').map(v => parseInt(v))
9+
10+
while (versions1.length > 0 && versions1[versions1.length - 1] == 0)
11+
versions1.pop()
12+
while (versions2.length > 0 && versions2[versions2.length - 1] == 0)
13+
versions2.pop()
14+
15+
let length1 = versions1.length,
16+
length2 = versions2.length
17+
18+
for (let i = 0; i < Math.min(length1, length2); i++) {
19+
if (versions1[i] > versions2[i])
20+
return 1
21+
else if (versions1[i] < versions2[i])
22+
return -1
23+
}
24+
25+
if (length1 > length2)
26+
return 1
27+
else if (length1 < length2)
28+
return -1
29+
else
30+
return 0
31+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution(object):
2+
def compareVersion(self, version1, version2):
3+
"""
4+
:type version1: str
5+
:type version2: str
6+
:rtype: int
7+
"""
8+
versions1 = [int(v) for v in version1.split('.')]
9+
versions2 = [int(v) for v in version2.split('.')]
10+
11+
while len(versions1) > 0 and versions1[-1] == 0:
12+
versions1.pop()
13+
while len(versions2) > 0 and versions2[-1] == 0:
14+
versions2.pop()
15+
16+
length1 = len(versions1)
17+
length2 = len(versions2)
18+
19+
for i in xrange(min(length1, length2)):
20+
if versions1[i] > versions2[i]:
21+
return 1
22+
elif versions1[i] < versions2[i]:
23+
return -1
24+
25+
if length1 > length2:
26+
return 1
27+
elif length1 < length2:
28+
return -1
29+
else:
30+
return 0

0 commit comments

Comments
 (0)