Bigram 分词
题目描述:
给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 “first second third” 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。
对于每种这样的情况,将第三个词 “third” 添加到答案中,并返回答案。
解题思路:
- 将给的文本(text)先按照单词分割开,并存放在一个列表(Word)中;
- 遍历这个列表,判断遍历到的当前值(frist)和下一个值(second)是否符合要求;
- 获取符合要求的第三个值,并保存在一个新的列表third中;
- 输出新列表third
题解代码:
class Solution:
def findOcurrences(self, text: str, first: str, second: str) -> List[str]:
#计算文本的长度
n = len(text)
#保存文本分割成的单词
word = []
#每个单词的初始位置
f = 0
#用空格来确认单词,给之前的文本加一个空格可以获取到最后一个词
text = text + " "
#遍历文本,获取每个单词,并保存在Word数组中
for i in range(n+1):
if text[i] == " ":
word.append(text[f:i])
f = i+1
#计算单词的长度
m = len(word)
#用来保存第三个词
third = []
#遍历文本生成的每个单词,找到第三个词
for i in range(m-2):
if word[i] == first and word[i+1] == second:
third.append(word[i+2])
return third
举个栗子:
(“There is no pressure when you are making a dream come true.(当你努力实现梦想时,就不会感到压力)
”FIGHTING. . . .)