Skip to content

Commit 81b6597

Browse files
committed
D. J.:
- Added the leetcode problem and solution for 165
1 parent 4fec9f5 commit 81b6597

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@
180180
- [153 Find Minimum in Rotated Sorted Array](https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/)
181181
- [155 Min Stack](https://leetcode.com/problems/min-stack/description/)
182182
- [162 Find Peak Element](https://leetcode.com/problems/find-peak-element/description/)
183+
- [165 Compare Version Numbers](https://leetcode.com/problems/compare-version-numbers/description/)
183184
- [167 Two Sum II - Input Array Is Sorted](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/description/)
184185
- [169 Majority Element](https://leetcode.com/problems/majority-element/description/)
185186
- [172 Factorial Trailing Zeroes](https://leetcode.com/problems/factorial-trailing-zeroes/description/)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution:
2+
"""Base class for all LeetCode Problems."""
3+
4+
def compareVersion(self, version1: str, version2: str) -> int:
5+
"""
6+
Given two version strings, version1 and version2, compare them. A version
7+
string consists of revisions separated by dots '.'. The value of the revision
8+
is its integer conversion ignoring leading zeros.
9+
10+
To compare version strings, compare their revision values in left-to-right
11+
order. If one of the version strings has fewer revisions, treat the missing
12+
revision values as 0.
13+
14+
Return the following:
15+
- If version1 < version2, return -1.
16+
- If version1 > version2, return 1.
17+
- Otherwise, return 0.
18+
"""
19+
numbers1 = list(map(int, version1.split(".")))
20+
numbers2 = list(map(int, version2.split(".")))
21+
i, j = 0, 0
22+
while i < len(numbers1) or j < len(numbers2):
23+
number1 = 0 if i >= len(numbers1) else numbers1[i]
24+
number2 = 0 if j >= len(numbers2) else numbers2[j]
25+
26+
if number1 < number2:
27+
return -1
28+
29+
if number1 > number2:
30+
return 1
31+
32+
i += 1
33+
j += 1
34+
35+
return 0
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import pytest
2+
3+
from awesome_python_leetcode._165_compare_version_numbers import Solution
4+
5+
6+
@pytest.mark.parametrize(
7+
argnames=["version1", "version2", "expected"],
8+
argvalues=[
9+
("1.2", "1.10", -1),
10+
("1.01", "1.001", 0),
11+
("1.0", "1.0.0.0", 0),
12+
],
13+
)
14+
def test_func(version1: str, version2: str, expected: int):
15+
"""Tests the solution of a LeetCode problem."""
16+
compare = Solution().compareVersion(version1, version2)
17+
assert compare == expected

0 commit comments

Comments
 (0)