Formatted question description: https://leetcode.ca/all/1078.html
1078. Occurrences After Bigram (Easy)
Given words first
and second
, consider occurrences in some text
of the form "first second third
", where second
comes immediately after first
, and third
comes immediately after second
.
For each such occurrence, add "third
" to the answer, and return the answer.
Example 1:
Input: text = "alice is a good girl she is a good student", first = "a", second = "good" Output: ["girl","student"]
Example 2:
Input: text = "we will we will rock you", first = "we", second = "will" Output: ["we","rock"]
Note:
1 <= text.length <= 1000
text
consists of space separated words, where each word consists of lowercase English letters.1 <= first.length, second.length <= 10
first
andsecond
consist of lowercase English letters.
Solution 1.
// OJ: https://leetcode.com/problems/occurrences-after-bigram/
// Time: O(N)
// Space: O(N)
class Solution {
public:
vector<string> findOcurrences(string text, string first, string second) {
vector<string> ans;
istringstream ss(text);
string prev2, prev, word;
while (ss >> word) {
if (prev2 == first && prev == second) ans.push_back(word);
prev2 = prev;
prev = word;
}
return ans;
}
};
Java
-
class Solution { public String[] findOcurrences(String text, String first, String second) { List<String> occurrencesList = new ArrayList<String>(); String[] textArray = text.split(" "); int length = textArray.length; for (int i = 2; i < length; i++) { String word1 = textArray[i - 2], word2 = textArray[i - 1]; if (word1.equals(first) && word2.equals(second)) occurrencesList.add(textArray[i]); } int size = occurrencesList.size(); String[] occurrencesArray = new String[size]; for (int i = 0; i < size; i++) occurrencesArray[i] = occurrencesList.get(i); return occurrencesArray; } }
-
// OJ: https://leetcode.com/problems/occurrences-after-bigram/ // Time: O(N) // Space: O(N) class Solution { public: vector<string> findOcurrences(string text, string first, string second) { vector<string> ans; istringstream ss(text); string prev2, prev, word; while (ss >> word) { if (prev2 == first && prev == second) ans.push_back(word); prev2 = prev; prev = word; } return ans; } };
-
# 1078. Occurrences After Bigram # https://leetcode.com/problems/occurrences-after-bigram/ class Solution: def findOcurrences(self, text: str, first: str, second: str) -> List[str]: text = text.split() n = len(text) res = [] for i in range(2, n): if text[i - 2] == first and text[i - 1] == second: res.append(text[i]) return res