Statement
Solution
Naive approach
A naive approach would be to first sort the given product data in lexicographic order to help with retrieving three matching products. Next, we iterate each character of the searched word, adding the current character to the substring to search for. We’ll search in the list of product names to check whether the current substring exists or not. If it exists, we’ll store the results (containing matching product names) for the current substring. We’ll repeat this process until we have traversed the whole list of product names.
It takes time to sort the given data, where is the number of product names. Given that is the number of characters in the search word, there will be substrings derived from the search word. So, it will take time to find the matching product names for all the substrings derived from the search word. So, the total time complexity of the search is . The space complexity of this solution is , since we’re using a variable to store the current prefix to search for.
Optimized approach using trie
The idea is to reduce the time complexity using the trie pattern. Although it will increase the space complexity a bit, it will help us reduce the time complexity to a great extent. We can feed the products’ data into the system and create a trie out of it. Next, we can search for the required product in the recorded data.