1. 题目
给出第一个词 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"]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/occurrences-after-bigram
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 题目很简单,需要理清楚逻辑和边界条件处理好
class Solution {
public:vector<string> findOcurrences(string text, string first, string second) {vector<string> ans;string cur;bool firstEq, secondEq;firstEq = secondEq = false;for(int i = 0; i < text.size(); ++i){if(text[i] == ' ' && i != text.size()-1){if(firstEq == true && secondEq == false){if(cur == second)secondEq = true;else{if(cur != first)firstEq = false;}}else if(firstEq == false){if(cur == first)firstEq = true;}else if(firstEq == true && secondEq == true){ans.push_back(cur);cur == first ? firstEq = true : firstEq = false;secondEq = false;}cur = "";}else if(i == text.size()-1){cur.push_back(text[i]);if(firstEq == true && secondEq == true)ans.push_back(cur);}elsecur.push_back(text[i]);}return ans;}
};