Skip to content

Commit 342e2cd

Browse files
author
Mauricio Klein
committed
Add solution for challenge #17
1 parent 520ae9c commit 342e2cd

File tree

5 files changed

+44
-0
lines changed

5 files changed

+44
-0
lines changed

challenge-17/Makefile

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
test:
2+
python test_*.py
3+
4+
.PHONY: test

challenge-17/README.md

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Longest Substring Without Repeating Characters
2+
3+
This problem was asked by Microsoft.
4+
5+
## Description
6+
7+
Given a string, find the length of the longest substring without repeating characters.
8+
9+
## Example
10+
11+
```
12+
"abrkaabcdefghijjxxx" => 10
13+
```

challenge-17/__init__.py

Whitespace-only changes.

challenge-17/solver.py

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def lengthOfLongestSubstring(self, s):
3+
h = {}
4+
head, tail = 0, -1
5+
max_length = 0
6+
7+
while head < len(s):
8+
if s[head] in h:
9+
tail = max(tail, h[s[head]])
10+
11+
h[s[head]] = head
12+
max_length = max(max_length, head - tail)
13+
head += 1
14+
15+
return max_length

challenge-17/test_solver.py

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import unittest
2+
from solver import Solution
3+
4+
class TestSolver(unittest.TestCase):
5+
def test_solver(self):
6+
self.assertEqual(Solution().lengthOfLongestSubstring("abrkaabcdefghijjxxx"), 10)
7+
self.assertEqual(Solution().lengthOfLongestSubstring("abcdefghij"), 10)
8+
self.assertEqual(Solution().lengthOfLongestSubstring("aaaaaaaaaa"), 1)
9+
self.assertEqual(Solution().lengthOfLongestSubstring(""), 0)
10+
11+
if __name__ == "__main__":
12+
unittest.main()

0 commit comments

Comments
 (0)