[LeetCode]1078.Bigram分词

[LeetCode]1078.Bigram分词

题目

给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 “first second third” 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。

对于每种这样的情况,将第三个词 “third” 添加到答案中,并返回答案。

示例

  1. 示例一
    输入:text = “alice is a good girl she is a good student”, first = “a”, second = “good”
    输出:[“girl”,“student”]

  2. 示例二
    输入: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;
    }
}
  1. 先将text分割成单词数组的形式,然后进行遍历。
  2. 直到当前下表i和i+1对应的单词与first和second相同,就将i+3计入答案中。
  3. 但是i+3要先判断是否已经超出单词数组的长度,避免发生越界。
上一篇:NULL检查运算符(?.)


下一篇:java单项环形链表