LeetCode.1078-两词出现后的单词(Occurrences After Bigram)

这是小川的第 392次更新,第 422篇原创

今天介绍的是 LeetCode算法题中 Easy级别的第 254题(顺位题号是 1078)。给出单词 first和单词 second,以 "first second third"的形式在某些文本中出现,其中 secondfirst之后立即出现, thirdsecond之后立即出现。

对于每个此类事件,将 "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”]

注意

  • 1
  • 文本由空格分隔的单词组成,每个单词由小写英文字母组成。
  • 1
  • first和second由小写英文字母组成。

题目很简单,要求找出在 firstsecond出现后紧跟着的第三个单词,而整句话是由空格和单词组成的,直接利用空格切分整句话,变成单词数组,如果数组的当前元素等于 first,且当前元素的下一个元素等于 second,就将当前元素的下下个元素添加进 ArrayList,最后将 ArrayList转为 String数组返回即可。

public String[] findOcurrences(String text, String first, String second) {
    List result = new ArrayList();
    String[] arr = text.split(" ");
    for (int i=0; i

如果不使用空格拆分,我们也可以采用遍历字符的方式来处理。

三个单词因为是相连的,所以我们使用前两个单词来找,只要能够找到前两个单词组成的子串,往后再找,直到遇到空格,那么就找到了第三个单词,将其截取出来存入 ArrayList即可,处理完后,需要将索引往后移,从第二个单词的位置开始下一次寻找。

public String[] findOcurrences2(String text, String first, String second) {
    List result = new ArrayList();
    int m = first.length(), i = 0, len = text.length();
    while (i < len) {
        String tem = first + " " + second + " ";
        int index = text.indexOf(tem, i);
        if (index == -1) {
            break;
        }
        int start = index+tem.length(), end = start;
        while (end < len && text.charAt(end) != ' ') {
            end++;
        }
        if (start < len) {
            result.add(text.substring(start, end));
        }
        i = index + m + 1;
    }
    return result.toArray(new String[result.size()]);
}

算法专题目前已连续 日更超过八个月,算法题文章 260+篇,公众号对话框回复【 数据结构与算法】、【 算法】、【 数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

Original: https://www.cnblogs.com/xiaochuan94/p/11242023.html
Author: 程序员小川
Title: LeetCode.1078-两词出现后的单词(Occurrences After Bigram)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572982/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Spring Cloud Alibaba 使用Nacos作为服务注册中心

    为什么需要注册中心? 在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用;服务管理,核心是有个服务注册表,心跳机制动态维护 ; 服务注册 …

    Java 2023年6月5日
    089
  • 九、Java异常机制

    异常机制 什么是异常 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读…

    Java 2023年6月7日
    075
  • 基于Javaweb,Mysql图书管理系统

    一、项目简介 人工管理图书的手续繁索、效率低下给具有强烈时间观念的管理人员带来了诸多不便,学校图书馆缺少一套完善的图书管理软件,为了对图书的管理方便,因此必须开发图书管理系统。 二…

    Java 2023年6月8日
    081
  • java学习之JSP

    JSP:全拼写:java Server pages:java 服务器端页面可以理解为一个特殊的页面:可以定义html代码也可以定义java的代码定义:JSP是简化Servlet编写…

    Java 2023年6月13日
    062
  • Java通过socket和DTU,RTU连接工业传感器通信

    现在做DTU传感器监测数据一块,给大家分享如何通过socket技术连接到DTU,并能和DTU下面的传感器通信的,分享一下自己的心得和体会。 总体架构图 先来看下整体网络结构图。 工…

    Java 2023年6月8日
    053
  • 基于Javaweb,Mysql生物信息数据管理系统

    一、项目简介 生物信息学是跨越和融合世界科技中两个最活跃领域的一-门新兴前沿学科,它使用计算和分析方法来解决生物学问题。生物信息平台则是一个集生物信息算法WEB集成,生物信息发布,…

    Java 2023年6月8日
    066
  • 基于Javaweb,SSM火车订票系统

    一、项目简介 本项目为火车订票系统,主要分为管理员、普通用户二大角色。主要功能请看系统功能介绍。本系整个框架是基于ssm搭建,使用maven来管理依赖,使用MySQL作为数据库,使…

    Java 2023年6月8日
    065
  • 如何组装一个注册中心

    hello,大家好呀,我是小楼。今天不写BUG,来聊一聊注册中心。 标题本来想叫《如何设计一个注册中心》,但网上已经有好多类似标题的文章了。所以打算另辟蹊径,换个角度,如何 组装一…

    Java 2023年6月6日
    094
  • java基础—java变量类型

    java变量类型 1、局部变量 概念:类的方法中的变量 2、实例变量 概念:定义在类里面,方法体、构造方法和语句块外,且不被static 修饰的变量,用于描述一个类中包含哪些数据 …

    Java 2023年6月8日
    085
  • 浅谈 Golang 插件机制

    我们知道类似 Java 等半编译半解释型语言编译生成的都是类似中间态的字节码,所以在 Java 里面我们想要实现程序工作的动态扩展,可以通过 Java 的字节码编辑技术([[动态代…

    Java 2023年6月7日
    065
  • 【转】Error:JAVA_HOME is not set and could not be found

    如果stop-dfs.sh也报了这个错,把$HADOOP_HOME/libexec/hadoop-config.sh中的如下内容之前加上 export JAVA_HOME=/hom…

    Java 2023年5月29日
    061
  • springmvc项目中InitializingBean执行2次

    为了修复生产数据,需要执行一段一次性的代码。 鉴于是spring老项目,就想到了InitializingBean。 代码如下。服务启动后,log里发现出现2条”一次性任…

    Java 2023年6月15日
    062
  • MySQL 添加用户并授予只能查询权限

    创建用户 create user ‘userName’@’%’ identified by ‘123456’…

    Java 2023年6月8日
    054
  • JAVA 8与JAVA 11到底该怎么选?

    很多初学Java的小伙伴经常咨询: 到底该安装哪个版本的JDK比较好? Java 8到底还够不够用? Java 11究竟有什么改进? 是不是Java版本越新越好? …&…

    Java 2023年5月29日
    093
  • Nginx_配置

    index.html 我Nginx配置下载地址:location /download {alias usr/share/nginx/html/cc/temp}这样我请求www.xx…

    Java 2023年5月30日
    055
  • Lamda(拉姆达)表达式演化过程

    HI!小伙伴们,好久没见了,4月份开始断更,中途有点事儿,今天开始更新了,整理一篇Lamda表达式演化过程,希望喜欢的一如既往的支持! 传统集合过滤 现在有2个需求:在一组学生集合…

    Java 2023年6月8日
    064
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球