Welcome to Subscribe On Youtube
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.
-
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; } } ############ class Solution { public String[] findOcurrences(String text, String first, String second) { String[] words = text.split(" "); List<String> ans = new ArrayList<>(); for (int i = 0; i < words.length - 2; ++i) { if (first.equals(words[i]) && second.equals(words[i + 1])) { ans.add(words[i + 2]); } } return ans.toArray(new String[0]); } }
-
// 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; } };
-
class Solution: def findOcurrences(self, text: str, first: str, second: str) -> List[str]: words = text.split(' ') return [ words[i + 2] for i in range(len(words) - 2) if words[i] == first and words[i + 1] == second ] ############ # 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
-
func findOcurrences(text string, first string, second string) []string { words := strings.Split(text, " ") var ans []string for i := 0; i < len(words)-2; i++ { if words[i] == first && words[i+1] == second { ans = append(ans, words[i+2]) } } return ans }
-
function findOcurrences(text: string, first: string, second: string): string[] { const words = text.split(' '); const n = words.length; const ans: string[] = []; for (let i = 0; i < n - 2; i++) { if (words[i] === first && words[i + 1] === second) { ans.push(words[i + 2]); } } return ans; }