## 1078. Occurrences After Bigram

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. `1 <= text.length <= 1000`
2. `text` consists of space separated words, where each word consists of lowercase English letters.
3. `1 <= first.length, second.length <= 10`
4. `first` and `second` consist of lowercase English letters.

## Rust Solution

``````struct Solution;

impl Solution {
fn find_ocurrences(text: String, first: String, second: String) -> Vec<String> {
let mut res: Vec<String> = vec![];
let words: Vec<&str> = text.split_whitespace().collect();
words.windows(3).for_each(|v| {
if v[0] == first && v[1] == second {
res.push(v[2].to_string());
}
});
res
}
}

#[test]
fn test() {
let text = "alice is a good girl she is a good student".to_string();
let first = "a".to_string();
let second = "good".to_string();
let res: Vec<String> = vec_string!["girl", "student"];
assert_eq!(Solution::find_ocurrences(text, first, second), res);
let text = "we will we will rock you".to_string();
let first = "we".to_string();
let second = "will".to_string();
let res: Vec<String> = vec_string!["we", "rock"];
assert_eq!(Solution::find_ocurrences(text, first, second), res);
}
``````

Having problems with this solution? Click here to submit an issue on github.