Search⌘ K
AI Features

Solution: Stream of Characters

Explore how to implement a StreamChecker class that detects if any suffix in a growing stream of characters matches words from a given list. Learn to use a reversed Trie combined with a deque to efficiently check suffixes, enabling quick dynamic string matching. This lesson helps you understand the construction and traversal of this custom data structure, improving your problem-solving skills for string searching challenges.

Statement

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’\text{`d', `c', `a'}, and ‘t’\text{`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:

  • 11\leq words.length 1000\leq 1000

  • 11 \leq words[i].length ...