[
string
hash table
trie
]
Leetcode 1065 Index Pairs of a String
Problem statement
https://leetcode.com/problems/index-pairs-of-a-string/
Solution
One way to solve this problem is just to check all substrings of text and check if we have them in our words
Complexity
It is O(n^3) for time and O(M) for space where M is total length of words in words.
Remark
Another solution is for each wor to check all possible places with complexity O(M*n).
Finally, there is trie solution, where we can put all words to trie in O(M) time and then we start with every one of n elements in text and traverse our tree: total complexity will be O(M + n*k), where k is the longest word.
Code
class Solution:
def indexPairs(self, text, words):
words_set, ans = set(words), []
for i, j in combinations(range(len(text) + 1), 2):
if text[i:j] in words_set:
ans += [[i, j-1]]
return ans