LeetCode-1078-Bigram-分词
题目
给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 “first second third” 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。
对于每种这样的情况,将第三个词 “third” 添加到答案中,并返回答案。
示例
输入:text = "alice is a good girl she is a good student", first = "a", second = "good"
输出:["girl","student"]
输入:text = "we will we will rock you", first = "we", second = "will"
输出:["we","rock"]
解答
根据题意进行模拟
代码
vector<string> findOcurrences(string text, string first, string second) {
vector<string> words;
int s = 0, e = 0, len = text.length();
while (true) {
while (s < len && text[s] == ' ') {
s++;
}
if (s >= len) {
break;
}
e = s + 1;
while (e < len && text[e] != ' ') {
e++;
}
words.push_back(text.substr(s, e - s));
s = e + 1;
}
vector<string> ret;
for (int i = 2; i < words.size(); i++) {
if (words[i - 2] == first && words[i - 1] == second) {
ret.push_back(words[i]);
}
}
return ret;
}
vector<string> findOcurrences(string text, string first, string second) {
stringstream ss(text);
string str;
vector<string> strs;
while (ss >> str) {
strs.push_back(str);
}
vector<string> ans;
for (int i = 0; i + 2 < strs.size(); i ++) {
if (strs[i] == first && strs[i + 1] == second) {
ans.push_back(strs[i + 2]);
}
}
return ans;
}