Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 1 addition & 0 deletions
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|
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Compare Version Numbers
2+
This problem is easy to solve
Lines changed: 26 additions & 0 deletions
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+
}
Lines changed: 31 additions & 0 deletions
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+
};
Lines changed: 30 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /