题目地址:
https://leetcode.com/problems/occurrences-after-bigram/
给定两个单词 s s s和 t t t,和一个英文句子,句子的定义是若干单词以空格隔开。如果句子的某处的形式是 s s s后面跟一个空格再跟 t t t再跟一个空格再跟某个单词 r r r的形式,那么就把 r r r搜集起来。要返回所有搜集的 r r r。
直接模拟即可。代码如下:
import java.util.ArrayList;
import java.util.List;
class Solution {
public String[] findOcurrences(String text, String first, String second) {
List<String> list = new ArrayList<>();
String[] strs = text.split(" ");
for (int i = 0; i < strs.length - 1; i++) {
if (strs[i].equals(first) && strs[i + 1].equals(second)) {
if (i + 2 < strs.length) {
list.add(strs[i + 2]);
}
}
}
String[] res = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
res[i] = list.get(i);
}
return res;
}
}
时空复杂度 O ( n l ) O(nl) O(nl), n n n是单词数, l l l是最长单词长度。