每日一题-20240117

题目描述

1078. Bigram 分词

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

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

示例 1:

1
2
输入:text = "alice is a good girl she is a good student", first = "a", second = "good"
输出:["girl","student"]

示例 2:

1
2
输入:text = "we will we will rock you", first = "we", second = "will"
输出:["we","rock"]

提示:

  • 1 <= text.length <= 1000
  • text 由小写英文字母和空格组成
  • text 中的所有单词之间都由 单个空格字符 分隔
  • 1 <= first.length, second.length <= 10
  • firstsecond 由小写英文字母组成

解题思路

  1. text空格分隔成数组。
  2. 定义一个List用于存放结果。
  3. 遍历text数组,若当前索引i的值与first相等,索引i+1的值与second相等,则将i+2的索引值 add 到List 中。
  4. 将 List 转换成数组返回。

代码实现

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Solution1078 {
public static String[] findOcurrences(String text, String first, String second) {
String[] words = text.split(" ");
List<String> result = new ArrayList<>();
for (int i = 0; i < words.length - 2; i++) {
if (words[i].equals(first) && words[i + 1].equals(second)) {
result.add(words[i + 2]);
}
}
return result.toArray(new String[result.size()]);
}

public static void main(String[] args) {
String[] result = findOcurrences("we will we will rock you", "we", "will");
for (String s : result) {
System.err.println(s);
}
}
}