LeetCode刷题笔记第1078题:Bigram分词
题目:
给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。
对于每种这样的情况,将第三个词 "third" 添加到答案中,并返回答案。
想法:
通过空格对文本进行分词,遍历整个文本,找到相邻的first和second,如果这两个词后面还存在单词,则添加到结果列表中。文本遍历结束返回结果列表即可。
class Solution:
def findOcurrences(self, text: str, first: str, second: str) -> List[str]:
words = text.split()
return [words[i] for i in range(2, len(words)) if words[i-2] == first and words[i-1] == second]
上述代码中:
时间复杂度:O(n),因为遍历了整体文本
空间复杂度:O(n),因为要存储结果列表,需要额外空间