[LeetCode]1078.Bigram分词
题目
给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 “first second third” 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。
对于每种这样的情况,将第三个词 “third” 添加到答案中,并返回答案。
示例
-
示例一
输入:text = “alice is a good girl she is a good student”, first = “a”, second = “good”
输出:[“girl”,“student”] -
示例二
输入:text = “we will we will rock you”, first = “we”, second = “will”
输出:[“we”,“rock”]
方法
一次遍历
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-1;i++){
if(words[i].equals(first) && words[i+1].equals(second)){
if(i+2 < words.length){
ans.add(words[i+2]);
}
}
}
String[] ans_array = (String[])ans.toArray(new String[ans.size()]);
return ans_array;
}
}
- 先将text分割成单词数组的形式,然后进行遍历。
- 直到当前下表i和i+1对应的单词与first和second相同,就将i+3计入答案中。
- 但是i+3要先判断是否已经超出单词数组的长度,避免发生越界。