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 <= 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.
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.