From 5c200618b40b6c651c117816e707a5de1cbba4a2 Mon Sep 17 00:00:00 2001 From: Lusina <12752833+BrianLusina@users.noreply.github.com> Date: Wed, 19 Nov 2025 09:19:05 +0300 Subject: [PATCH 1/2] feat(data-structures, trie, stream-checker): adds a stream checker data structure for suffice matches The stream checker data structure leverages the use of the Trie data structure to find suffixes that match words that it was initialized with. Since the trie is a Prefix Tree essentially matching on prefixes, this required a reverse of the Trie to instead match on suffixes. Note that not change to the Trie node is changed other than the initialization of using char in the constructor. BREAKING CHANGE The Trie data structure does not handle the search correctly anymore and will need to be refactored to cater for the changes that have been introduced. --- datastructures/streams/__init__.py | 0 .../streams/stream_checker/README.md | 30 +++++++ .../streams/stream_checker/__init__.py | 73 ++++++++++++++++++ .../examples/stream_checker_example_1.png | Bin 0 -> 51678 bytes .../examples/stream_checker_example_2.png | Bin 0 -> 46902 bytes .../examples/stream_checker_example_3.png | Bin 0 -> 40524 bytes .../stream_checker/test_stream_checker.py | 35 +++++++++ datastructures/trees/trie/__init__.py | 69 ++--------------- datastructures/trees/trie/trie.py | 57 ++++++++++++++ datastructures/trees/trie/trie_node.py | 23 ++++++ 10 files changed, 224 insertions(+), 63 deletions(-) create mode 100644 datastructures/streams/__init__.py create mode 100644 datastructures/streams/stream_checker/README.md create mode 100644 datastructures/streams/stream_checker/__init__.py create mode 100644 datastructures/streams/stream_checker/images/examples/stream_checker_example_1.png create mode 100644 datastructures/streams/stream_checker/images/examples/stream_checker_example_2.png create mode 100644 datastructures/streams/stream_checker/images/examples/stream_checker_example_3.png create mode 100644 datastructures/streams/stream_checker/test_stream_checker.py create mode 100644 datastructures/trees/trie/trie.py create mode 100644 datastructures/trees/trie/trie_node.py diff --git a/datastructures/streams/__init__.py b/datastructures/streams/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/datastructures/streams/stream_checker/README.md b/datastructures/streams/stream_checker/README.md new file mode 100644 index 00000000..060c9090 --- /dev/null +++ b/datastructures/streams/stream_checker/README.md @@ -0,0 +1,30 @@ +# Stream of Characters + +Design a data structure that processes a stream of characters and, after each character is received, determines if a +suffix of these characters is a string in a given array of strings words. + +For example, if words = ["dog"] and the stream adds the characters ‘d’, ‘c’, ‘a’ , and ‘t’ in sequence, the algorithm +should detect that the suffix "cat" of the stream "dcat" matches the word "cat" from the list. + +So, for words, the goal is to detect if any of these words appear as a suffix of the stream built so far. To accomplish +this, implement a class StreamChecker: + +- **Constructor**: Initializes the object with the list of target words. +- **boolean query(char letter)**: Appends a character to the stream and returns TRUE if any suffix of the stream matches + a word in the list words. + +Constraints: + +- 1 ≤ words.length ≤ 1000 +- 1 ≤ words[i].length ≤ 200 +- words[i] consists of lowercase English letters. +- letter is a lowercase English letter. +- At most 4 * 10^2 calls will be made to query. + +Examples: + +![Example 1](./images/examples/stream_checker_example_1.png) +![Example 2](./images/examples/stream_checker_example_2.png) +![Example 3](./images/examples/stream_checker_example_3.png) + + diff --git a/datastructures/streams/stream_checker/__init__.py b/datastructures/streams/stream_checker/__init__.py new file mode 100644 index 00000000..02d7d02f --- /dev/null +++ b/datastructures/streams/stream_checker/__init__.py @@ -0,0 +1,73 @@ +from typing import Deque, List +from collections import deque +from datastructures.trees.trie import TrieNode + + +class StreamChecker(object): + + def __init__(self, words: List[str]): + """ + Initializes a StreamChecker instance. + + Constructor Time: O(Ltotal), where Ltotal is the sum of the lengths of all words. This is a one-time cost. + + Parameters: + words (List[str]): List of words to be checked in the stream. + + Returns: + instance of streamchecker + """ + self.words = words + self.trie = TrieNode() + self.max_len = 0 + self.__build_trie() + # deque(maxlen) is key for stream history optimization + self.stream: Deque[str] = deque(maxlen=self.max_len) + + def __build_trie(self): + # insert the words in reverse order into the trie + for word in self.words[::-1]: + # 1. track max length for deque optimization + if len(word) > self.max_len: + self.max_len = len(word) + + current = self.trie + # 2. insert characters in reverse order + for letter in word[::-1]: + current = current.children[letter] + + # 3. Mark the end of the reversed word + current.is_end = True + + def query(self, letter: str) -> bool: + """ + Query Time: O(L), where L is the length of the stream. This is because we only traverse the trie up to the + length of the stream. + + Query Time: O(Lmax), where Lmax is the length of the longest word (up to 200). Since this is a constant limit, + we can treat this as O(1) amortized time per query. + + Parameters: + letter (str): The next letter in the stream. + + Returns: + bool: True if the letter is the end of a word, False otherwise. + """ + self.stream.append(letter) + current = self.trie + + # Iterate stream in reverse (newest character first) + for character in reversed(self.stream): + # Check for dead end (critical for query logic) + if character not in current.children: + return False + + # Traverse to the next node + current = current.children[character] + + # check for match(success condition) + if current.is_end: + return True + + # If loop finishes without a match + return False diff --git a/datastructures/streams/stream_checker/images/examples/stream_checker_example_1.png b/datastructures/streams/stream_checker/images/examples/stream_checker_example_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d1309d11cfd08d9993d3a8a21b77f6c992f64233 GIT binary patch literal 51678 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
_fDy=7;)-^V0`tI|P&8 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�Gq%Lf0IoU%Z;(oD4W-<7v+se_jdA;9K8` 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 DLSTVp literal 0 HcmV?d00001 diff --git a/datastructures/streams/stream_checker/images/examples/stream_checker_example_2.png b/datastructures/streams/stream_checker/images/examples/stream_checker_example_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8a663fb1a40ab574d91bf485f6396fc8d4be513e GIT binary patch literal 46902 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 JSlTS`{{Up0yeR+x literal 0 HcmV?d00001 diff --git a/datastructures/streams/stream_checker/images/examples/stream_checker_example_3.png b/datastructures/streams/stream_checker/images/examples/stream_checker_example_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7d9ea2c2794d08ca2ce7bcb1c398ed45111dda35 GIT binary patch literal 40524 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%0D-y4f`qSjhUuLCK26iL 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%0A9O9e%bCjW?w2_w3EA-07CVHov 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 literal 0 HcmV?d00001 diff --git a/datastructures/streams/stream_checker/test_stream_checker.py b/datastructures/streams/stream_checker/test_stream_checker.py new file mode 100644 index 00000000..08c011c2 --- /dev/null +++ b/datastructures/streams/stream_checker/test_stream_checker.py @@ -0,0 +1,35 @@ +import unittest +from . import StreamChecker + + +class StreamCheckerTestCase(unittest.TestCase): + def test_1(self): + words = ["go", "hi"] + stream = StreamChecker(words) + self.assertFalse(stream.query("h")) + self.assertTrue(stream.query("i")) + self.assertFalse(stream.query("g")) + self.assertTrue(stream.query("o")) + self.assertFalse(stream.query("x")) + self.assertFalse(stream.query("y")) + + def test_2(self): + words = ["no", "yes"] + stream = StreamChecker(words) + self.assertFalse(stream.query("y")) + self.assertFalse(stream.query("e")) + self.assertTrue(stream.query("s")) + self.assertFalse(stream.query("n")) + self.assertTrue(stream.query("o")) + + def test_3(self): + words = ["a", "aa"] + stream = StreamChecker(words) + self.assertTrue(stream.query("a")) + self.assertTrue(stream.query("a")) + self.assertTrue(stream.query("a")) + self.assertFalse(stream.query("b")) + + +if __name__ == '__main__': + unittest.main() diff --git a/datastructures/trees/trie/__init__.py b/datastructures/trees/trie/__init__.py index c7b323ed..0e511794 100644 --- a/datastructures/trees/trie/__init__.py +++ b/datastructures/trees/trie/__init__.py @@ -1,65 +1,8 @@ -from collections import defaultdict -from typing import List +from datastructures.trees.trie.trie_node import TrieNode +from datastructures.trees.trie.trie import Trie -class TrieNode: - def __init__(self, char: str): - self.char = char - self.children = defaultdict(TrieNode) - self.is_end = False - - -class Trie: - def __init__(self): - self.root = TrieNode("") - - def insert(self, word: str) -> None: - curr = self.root - - for char in word: - if char in curr.children: - curr = curr.children[char] - - else: - new_node = TrieNode(char) - curr.children[char] = new_node - curr = new_node - - curr.is_end = True - - def search(self, word: str) -> List[str]: - curr = self.root - - if len(word) == 0: - return [] - - for char in word: - if char in curr.children: - curr = curr.children[char] - else: - return [] - - output = [] - - def dfs(node: TrieNode, prefix: str) -> None: - if node.is_end: - output.append((prefix + node.char)) - - for child in node.children.values(): - dfs(child, prefix + node.char) - - dfs(curr, word[:-1]) - return output - - def starts_with(self, prefix: str) -> bool: - """ - Returns true if the given prefix is a prefix of any word in the trie. - """ - curr = self.root - - for char in prefix: - if char not in curr.children: - return False - curr = curr.children[char] - - return True +__all__ = [ + "Trie", + "TrieNode" +] diff --git a/datastructures/trees/trie/trie.py b/datastructures/trees/trie/trie.py new file mode 100644 index 00000000..c1b0e2de --- /dev/null +++ b/datastructures/trees/trie/trie.py @@ -0,0 +1,57 @@ +from typing import List +from datastructures.trees.trie.trie_node import TrieNode + + +class Trie: + def __init__(self): + self.root = TrieNode() + + def insert(self, word: str) -> None: + curr = self.root + + for char in word: + if char in curr.children: + curr = curr.children[char] + else: + new_node = TrieNode() + curr.children[char] = new_node + curr = new_node + + curr.is_end = True + + def search(self, word: str) -> List[str]: + curr = self.root + + if len(word) == 0: + return [] + + for char in word: + if char in curr.children: + curr = curr.children[char] + else: + return [] + + output = [] + + def dfs(node: TrieNode, prefix: str) -> None: + if node.is_end: + output.append((prefix + node.char)) + + for child in node.children.values(): + dfs(child, prefix + node.char) + + dfs(curr, word[:-1]) + return output + + def starts_with(self, prefix: str) -> bool: + """ + Returns true if the given prefix is a prefix of any word in the trie. + """ + curr = self.root + + for char in prefix: + if char not in curr.children: + return False + curr = curr.children[char] + + return True diff --git a/datastructures/trees/trie/trie_node.py b/datastructures/trees/trie/trie_node.py new file mode 100644 index 00000000..bcab413b --- /dev/null +++ b/datastructures/trees/trie/trie_node.py @@ -0,0 +1,23 @@ +from typing import DefaultDict +from collections import defaultdict + + +class TrieNode: + def __init__(self): + # self.char = char + """ + Initializes a TrieNode instance. + + A TrieNode contains a character and a dictionary of its children. It also contains a boolean indicating whether the node is the end of a word in the Trie. + + Parameters: + None + + Returns: + None + """ + self.children: DefaultDict[str, TrieNode] = defaultdict(TrieNode) + self.is_end = False + + def __repr__(self): + return f"TrieNode({self.children.items()}, {self.is_end})" From 4993a242f80b2ee81d83bab705ece7338fd57de2 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Wed, 19 Nov 2025 06:22:18 +0000 Subject: [PATCH 2/2] updating DIRECTORY.md --- DIRECTORY.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 1a39d050..528220a5 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -265,6 +265,9 @@ * Minstack * [Test Min Stack](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/stacks/minstack/test_min_stack.py) * [Test Stacks](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/stacks/test_stacks.py) + * Streams + * Stream Checker + * [Test Stream Checker](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/streams/stream_checker/test_stream_checker.py) * Timemap * [Test Timemap](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/timemap/test_timemap.py) * Trees @@ -303,6 +306,9 @@ * Ternary * [Node](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/trees/ternary/node.py) * [Test Ternary Tree Paths](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/trees/ternary/test_ternary_tree_paths.py) + * Trie + * [Trie](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/trees/trie/trie.py) + * [Trie Node](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/trees/trie/trie_node.py) * Tuples * [Named Tuples](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/tuples/named_tuples.py)