![]() |
VOOZH | about |
Given a list of sentences and a list of phrases. The task is to find which sentence(s) contain all the words in a phrase and for every phrase print the sentences number that contains the given phrase. Constraint: A word cannot be a part of more than 10 sentences. Examples:
Input:
Sentences: 1. Strings are an array of characters. 2. Sentences are an array of words.
Phrases: 1. an array of 2. sentences are strings
Output: Phrase1 is present in sentences: 1,2 Phrase2 is present in sentences: None Since each word in phrase 1 exists in both the sentences, but all the words in second phrase do not exist in either.
Input:
Sentences: 1. Sets in python are a hash table representation of arrays. 2. Searching in Sets are a function of time complexity O(1). 3. Sets only contain unique elements, and have no order.
Phrases: 1. Sets are a 2. Searching in
Output: Phrase1 is present in sentences: 1, 2 Phrase2 is present in sentences: 2
Approach: For each Phrase, we have to find the sentences which contain all the words of the phrase. So, for each word in the given phrase, we check if a sentence contains it. We do this for each sentence. This process of searching may become faster if the words in the sentence are stored in a set instead of a list. Below is the implementation of above approach:
Phrase1: 1 2 Phrase2: NONE
Time complexity: O(SPW)
Space complexity: O(SW)
where S is the number of sentences and W is the average number of words per sentence and P is the number of phrases and W is the average number of words per phrase.