题目
解答
这道题唯一需要考虑的就是越界问题。
class Solution:
def findOcurrences(self, text: str, first: str, second: str) -> List[str]:
spitText = text.split()
ans = []
for i in range (0,len(spitText)-2):
if (spitText[i] == first and spitText[i+1] == second):
ans.append(spitText[i+2])
return ans
正则方法
# 在评论中看到的,引用的是这位大佬的答案 “550403401”
class Solution:
def findOcurrences(self, text: str, first: str, second: str) -> List[str]:
return re.findall(fr"(?<=\b{first} {second} )(\w+)", text)
其中有两个知识点
\b 是 单词边界
there is a beautiful girl
is 左右两边是空格
空格和i之间 s和空格之间都叫做单词边界。
一般\b是用来捕获单词的
?= 、?<=、?!=、?<!= 含义
// ?= 前瞻,是否等于。
exp1(?=exp2) 查找2表达式前面的表达式1
// ?<= 后顾
(?<=exp1)exp2 查找以exp1开头的exp2
// ?!= 负前瞻
exp1(?!exp2) 查找后边不是2表达式的一表达式
// ?<!= 负后顾
(?<!=exp1)exp2 查找不一exp1开头的exp2