给出第一个词 first
和第二个词 second
,考虑在某些文本 text
中可能以 "first second third
" 形式出现的情况,其中 second
紧随 first
出现,third
紧随 second
出现。
对于每种这样的情况,将第三个词 "third
" 添加到答案中,并返回答案。
示例 1:
输入:text = "alice is a good girl she is a good student", first = "a", second = "good" 输出:["girl","student"]
示例 2:
输入:text = "we will we will rock you", first = "we", second = "will" 输出:["we","rock"]
提示:
1 <= text.length <= 1000
text
由一些用空格分隔的单词组成,每个单词都由小写英文字母组成
1 <= first.length, second.length <= 10
first
和 second
由小写英文字母组成
C++
class Solution {
public:
vector<string> findOcurrences(string text, string first, string second)
{
vector<string> res;
string tmp=first+' '+second;
int m=tmp.length();
int n=text.length();
vector<int> vec;
for(int i=0;i<n;i++)
{
if(' '==text[i])
{
vec.push_back(i);
}
}
for(int i=1;i<vec.size();i++)
{
if(1==i)
{
if(text.substr(0,vec[i])==tmp)
{
if(2==vec.size())
{
res.push_back(text.substr(vec[i]+1,n-m-1));
}
else
{
res.push_back(text.substr(vec[i]+1,vec[i+1]-vec[i]-1));
}
}
}
else
{
if(text.substr(vec[i-2]+1,vec[i]-vec[i-2]-1)==tmp)
{
if(i==vec.size()-1)
{
res.push_back(text.substr(vec[i]+1,n-vec[i]));
}
else
{
res.push_back(text.substr(vec[i]+1,vec[i+1]-vec[i]-1));
}
}
}
}
return res;
}
};
python
class Solution:
def findOcurrences(self, text: str, first: str, second: str) -> List[str]:
tmp=first+' '+second
n=len(text)
vec=[]
res=[]
for i in range(n):
if ' '==text[i]:
vec.append(i)
length=len(vec)
for i in range(1,length):
if 1==i:
if text[0:vec[i]]==tmp:
if i==length-1:
res.append(text[vec[i]+1:])
else:
res.append(text[vec[i]+1:vec[i+1]])
else:
if text[vec[i-2]+1:vec[i]]==tmp:
if i==length-1:
res.append(text[vec[i]+1:])
else:
res.append(text[vec[i]+1:vec[i+1]])
return res