Leetcode 1078. Bigram 分词
给出第一个词 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 由小写英文字母和空格组成
- text 中的所有单词之间都由 单个空格字符 分隔
- 1 <= first.length, second.length <= 10
- first 和 second 由小写英文字母组成
主要思路:字符串分割
Code:
class Solution {
public:
void str_split(const std::string & src, const std::string & sep, std::vector<string> & vec_str)
{
std::string::size_type start = 0;
int i=0;
for(std::string::size_type end = src.find(sep, start); end != std::string::npos; end = src.find(sep, start))
{
if(end > start)
{
string str=src.substr(start, end - start);
vec_str.push_back(str);
}
start = end + sep.length();
}
if(start < src.length())
{
string str=src.substr(start, src.length() - start);
vec_str.push_back(str);
}
}
vector<string> findOcurrences(string text, string first, string second) {
vector<string>vec;
str_split(text," ",vec);
vector<string>res;
for(int i=2;i<vec.size();i++)
{
if(vec[i-1]==second&&(vec[i-2]==first))
{
res.push_back(vec[i]);
}
}
return res;
}
};