Leetcode 648.单词替换

单词替换

在英语中,我们有一个叫做 词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。

现在,给定一个由许多词根组成的词典和一个句子。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。

你需要输出替换之后的句子。

示例 1:

输入: dict(词典) = ["cat", "bat", "rat"]

sentence(句子) = "the cattle was rattled by the battery"

输出: "the cat was rat by the bat"

注:

  1. 输入只包含小写字母。
  2. 1 <= 字典单词数 <=1000
  3. 1 <=  句中词语数 <= 1000
  4. 1 <= 词根长度 <= 100
  5. 1 <= 句中词语长度 <= 1000

 

思路

Intuition

For each word in the sentence, we'll look at successive prefixes and see if we saw them before.

Algorithm

Store all the roots in a Set structure. Then for each word, look at successive prefixes of that word. If you find a prefix that is a root, replace the word with that prefix. Otherwise, the prefix will just be the word itself, and we should add that to the final sentence answer.

public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。

 

然后就要明确正则表达式的含义了:

\\s表示 空格,回车,换行等空白符,

+号表示一个或多个的意思

 

import java.util.HashSet;
import java.util.List;
import java.util.Set;

class Solution {
public String replaceWords(List<String> roots, String sentence) {
Set<String> rootset = new HashSet();
for (String root: roots) rootset.add(root);

StringBuilder ans = new StringBuilder();
for (String word: sentence.split("\\s+")) {
String prefix = "";
for (int i = 1; i <= word.length(); ++i) {
prefix = word.substring(0, i);
if (rootset.contains(prefix)) break;
}
if (ans.length() > 0) ans.append(" ");
ans.append(prefix);
}
return ans.toString();
}
}

转载于:https://www.cnblogs.com/kexinxin/p/10383069.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

APP网络测试要点和弱网模拟

当前APP网络环境比较复杂&#xff0c;网络制式有2G、3G、4G网络&#xff0c;还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异&#xff0c;都会对用户使用app造成一定影响。另外&#xff0c;当前app使用场景多变&#xff0c;如进地铁、上公交、进电梯等&#xff0c;使…

homebrew mysql conf_homebrew 安装mysql后,如何配置mysql

这个是我最新并且一直推崇的方法&#xff1a;1、安装&#xff1a;sunyichaodeMacBook-Pro:~ sunyichao$ brew install mysql2、开启mysql&#xff1a;mysql.server start2、使用mysql的配置脚本&#xff1a;/usr/local/opt/mysql/bin/mysql_secure_installation //mysql 提供的…

word公式插件_再也不用担心我的公式写不出来了:一款公式输入神器实测

→ → https://mp.weixin.qq.com/s/gNRWdN-W4_Eb2MyyTpWzjw关注微信公众号&#xff1a;人工智能前沿讲习&#xff0c;重磅干货&#xff0c;第一时间送达本文推荐一个公式输入神器&#xff0c;只要截图就能识别公式&#xff0c;手写的公式都能识别。经过实测&#xff0c;几乎没有…

使用Camel在Amazon上构建分布式工作流应用程序

带有SNS-SQS的管道 工作流由按动态条件确定的特定顺序执行的独立任务组成。 工作流通常代表业务流程&#xff0c;例如电子商务商店中的订单处理步骤。 Amazon Web Services提供了各种工具来构建分布式和可扩展的工作流应用程序。 构建此类应用程序的一种方法是使用主题和队列来…

表单外部提交

外部按钮提交&#xff1a; html&#xff1a; <form method"post" name"sort">.......</form> <button type"button" class"btn btn-sm btn-azure btn-addon" οnclick"javascript:document.sort.submit()"&…

使用stylus

1. 首先确保 node npm 环境一切正常。 2. 全局安装 stylus&#xff1a; 在命令行中&#xff1a; npm i styluslatest -g 3. 此时可以创建 .styl 文件&#xff0c; 并进行编辑。 4. 使用命令 将 .styl 文件 编译为 .css 文件&#xff1a; stylus -c path/to/in…

mysql 高版本检索外键_第05期:外键到底能不能用?

外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在操作上的一致性与完整性。外键在大部分企业写的开发规范里会直接规避掉&#xff01;外键有优缺点&#xff0c;也并不是说每种场景都不适用&#xff0c;完全没有必要一刀切。外键到底能不能用&#xff1f;下面会针对…

python重启路由器_Python3控制路由器——使用requests重启极路由.py

通过本文给大家介绍Python3控制路由器——使用requests重启极路由.py的相关知识&#xff0c;代码写了相应的注释&#xff0c;以后再写成可以方便调用的模块。用fiddler抓包可以看到很多HTTP头&#xff0c;经过尝试发现不是都必须的。Upgrade-Insecure-Requests:1,#必要项&#…

从Ant Build演进Gradle Build:导入Ant Build文件

在大型项目上更改构建系统可能很困难并且需要大量工作。 幸运的是&#xff0c;对于那些将Ant版本迁移到Gradle版本的人&#xff0c;Gradle提供了特别方便的机制来促进这种迁移 。 由于Gradle基于Groovy构建&#xff0c;并且Groovy通过AntBuilder包含内置的Ant支持&#xff0c;因…

洛谷——P2719 搞笑世界杯

P2719 搞笑世界杯 题目描述 随着世界杯小组赛的结束,法国,阿根廷等世界强队都纷纷被淘汰,让人心痛不已. 于是有人组织了一场搞笑世界杯,将这些被淘汰的强队重新组织起来和世界杯一同比赛.你和你的朋友欣然去购买球票.不过搞笑世界杯的球票出售方式也很特别,它们只准备了两种球票…

HTML5 之 简单汇总

参考&#xff1a; HTML5的十大新特性 前端面试必备之html5的新特性 HTML5 主要内容&#xff1a;语义化、增强型表单、多媒体标签、Canvas、SVG、地理定位、拖放API、Web Worker、Web Storage、WebSocket、HTML 5 应用程序缓存 1.语义化元素 1.1结构元素 标签描述article表示与上…

个人信息管理系统代码_Thymeleaf+SpringBoot+Mybatis实现的易游网旅游信息管理系统...

项目简介项目源码&#xff1a;麻烦转发后关注JAVA梦想口服液私信回复【源码】即可获取&#xff01;本系统是基于ThymeleafSpringBootMybatis。是非常标准的SSM三大框架(SpringBoot就是一个大框架&#xff0c;里面包含了许多的东西&#xff0c;其中Spring就是最核心的内容&#…

HTML速查列表

HTML速查列表 HTML基本文档 <!DOCTYPE html> <html> <head> <title>文档标题</title> </head> <body> 可见文本... </body> </html> 基本标签&#xff08;Basic Tags&#xff09; <h1>最大的标题</h1> &l…

被问到有没有内核开发经验_一个人就是一个开发团队!成电硬核毕业生自制迷你电脑走红!...

△小视频近日&#xff0c;一段长3分多钟的小视频在B站突然爆红&#xff0c;不仅登上首页&#xff0c;获得超过200万的播放量&#xff0c;还被众多观众“膜拜”。有网友在评论区说&#xff1a;“其实这些东西吧&#xff0c;外行看起来很牛&#xff0c;但我这种内行看起来&#x…

使用英特尔性能计数器调整垃圾收集

介绍 我不得不承认我很震惊。 确实&#xff0c;当我意识到这个出现的日历帖子将涉及垃圾收集时&#xff0c;我感到非常震惊。 GC的主题引起了Java倡导者和那些认为内存管理应该是手动的人的热情。 撰写了许多文章&#xff0c;内容涉及看起来奇怪的命令行参数中的细微变化&#…

matlab2010a连接mysql_MATLAB2010a+OpenCV2.3.1+VS2010运行TLD

出现matlab不显示C编译器的原因主要还是当前Matlab版本相对于VS来说不够新&#xff0c;比如14版的肯定支持10的VS。 本文引用地址&#xff1a; http://blog.csdn.net/shanpohe/article/details/7596401 http://blog.sina.com.cn/s/blog_adfd55190101ejvr.html TLD(Tracking Lea…

理解总结篇—List、Set、Map

List是存储对象的容器&#xff0c;可以存储任意类型的对象且长度可变&#xff0c;List的存储对象是有顺序的&#xff0c;可重复的。 <1> List的接口框架 ArrayList实现类通过数组实现&#xff0c;在向集合中增加或删除时&#xff0c;需要对集合进行增容和拷贝&#xff0c…

SpringBoot+Redis使用jedis实现了对Redis基本类型操作超全工具类

这编文章主要介绍了springboot整合redis&#xff0c;使用jedis实现了对Redis基本类型操作&#xff0c;一些redis的常用命令总结到了一个公共的工具类中,其中使用了fastjson作为了序列化工具。 注&#xff1a;使用了 jdk 1.8 新特性 &#xff0c;jdk版本需要>1.8 一.添加mave…

更改span标签样式_CSS 内嵌样式

前面一节我们讲了行内样式&#xff0c;但是行内样式的缺点就是样式不能重用。例如当有好多个 标签&#xff0c;我们希望所有的 标签的样式都一致&#xff0c;那么需要在每个标签中都写一遍&#xff0c;这么会很麻烦&#xff0c;也会增加很多代码。那么为了解决这个问题&#…

js 函数节流

//es6语法export function debounce(func, delay) {let timer//返回一个函数&#xff0c;并拿到参数return function (...args) {if (timer) {clearTimeout(timer)}timer setTimeout(() > {func.apply(this, args)}, delay)} } //简单实现var debounce function(idle, act…