1078. Occurrences After Bigram #
Problem #
Given words first and second, consider occurrences in some text of the form “first second third”, where second comes immediately after first, and thirdcomes 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 <= 1000textconsists of space separated words, where each word consists of lowercase English letters.1 <= first.length, second.length <= 10firstandsecondconsist of lowercase English letters.
Problem Summary #
Given the first word first and the second word second, consider occurrences in some text text of the form “first second third”, where second comes immediately after first, and third comes immediately after second. For each such occurrence, add the third word “third” to the answer, and return the answer.
Solution Approach #
- Easy problem. Given a text, find the string immediately following first and second, and output all such strings if there are multiple. The solution is very simple: first split words into individual strings, then traverse them in order for string matching. After matching first and second, output the string that follows them.
Code #
package leetcode
import "strings"
func findOcurrences(text string, first string, second string) []string {
var res []string
words := strings.Split(text, " ")
if len(words) < 3 {
return []string{}
}
for i := 2; i < len(words); i++ {
if words[i-2] == first && words[i-1] == second {
res = append(res, words[i])
}
}
return res
}