当前位置:网站首页>【日常训练】648. 单词替换
【日常训练】648. 单词替换
2022-07-07 11:37:00 【Puppet__】
题目
在英语中,我们有一个叫做 词根(root) 的概念,可以词根后面添加其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。
现在,给定一个由许多词根组成的词典 dictionary 和一个用空格分隔单词形成的句子 sentence。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。
你需要输出替换之后的句子。
示例 1:
输入:dictionary = [“cat”,“bat”,“rat”], sentence = “the cattle was rattled by the battery”
输出:“the cat was rat by the bat”
示例 2:
输入:dictionary = [“a”,“b”,“c”], sentence = “aadsfasf absbs bbab cadsfafs”
输出:“a a b c”
提示:
1 <= dictionary.length <= 1000
1 <= dictionary[i].length <= 100
dictionary[i] 仅由小写字母组成。
1 <= sentence.length <= 106
sentence 仅由小写字母和空格组成。
sentence 中单词的总量在范围 [1, 1000] 内。
sentence 中每个单词的长度在范围 [1, 1000] 内。
sentence 中单词之间由一个空格隔开。
sentence 没有前导或尾随空格。
代码
package dayLeetCode;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class dayleetcode648 {
// 模拟 注意要用set不然会时间超限
public String replaceWords(List<String> dictionary, String sentence) {
Set<String> set = new HashSet<>();
for (String str : dictionary){
set.add(str);
}
String[] s = sentence.split(" ");
// StringBuffer ansStr = new StringBuffer();
for (int j = 0; j < s.length; j++){
// 从每个单词的开头 怕断含不含给出词根
String str = s[j];
for (int i = 0; i < str.length(); i++){
if (set.contains(str.substring(0, i))){
s[j] = str.substring(0, i);
break;
}
}
// if (j == s.length - 1){
// ansStr.append(s[j]);
// }
// else{
// ansStr.append(s[j] + " ");
// }
}
return String.join(" ", s);
}
public static void main(String[] args) {
dayleetcode648 obj = new dayleetcode648();
List<String> dict = new ArrayList<>();
dict.add("cat");
dict.add("bat");
dict.add("rat");
String str = "the cattle was rattled by the battery";
System.out.println(obj.replaceWords(dict, str));
}
}
边栏推荐
- mysql 局域网内访问不到的问题
- 【等保】云计算安全扩展要求关注的安全目标和实现方式区分原则有哪些?
- Getting started with MySQL
- Write it down once Net a new energy system thread surge analysis
- 2022-7-7 Leetcode 844.比较含退格的字符串
- Fast development board pinctrl and GPIO subsystem experiment for itop-imx6ull - modify the device tree file
- 室内ROS机器人导航调试记录(膨胀半径的选取经验)
- My "troublesome" subordinates after 00: not bad for money, against leaders, and resist overtime
- Move base parameter analysis and experience summary
- ESP32系列专栏
猜你喜欢
Fast development board pinctrl and GPIO subsystem experiment for itop-imx6ull - modify the device tree file
[learning notes] agc010
MySQL入门尝鲜
Indoor ROS robot navigation commissioning record (experience in selecting expansion radius)
High end for 8 years, how is Yadi now?
【堡垒机】云堡垒机和普通堡垒机的区别是什么?
我那“不好惹”的00后下属:不差钱,怼领导,抵制加班
交付效率提升52倍,运营效率提升10倍,看《金融云原生技术实践案例汇编》(附下载)
作战图鉴:12大场景详述容器安全建设要求
Milkdown 控件图标
随机推荐
Navicat run SQL file import data incomplete or import failed
高端了8年,雅迪如今怎么样?
ESP32构解工程添加组件
得物客服热线的演进之路
Problems that cannot be accessed in MySQL LAN
Introduction and basic use of stored procedures
LeetCode简单题分享(20)
社会责任·价值共创,中关村网络安全与信息化产业联盟对话网信企业家海泰方圆董事长姜海舟先生
ROS机器人更换新雷达需要重新配置哪些参数
Clion mingw64 Chinese garbled code
[1] Basic knowledge of ros2 - summary version of operation commands
Milkdown control icon
我那“不好惹”的00后下属:不差钱,怼领导,抵制加班
一文读懂数仓中的pg_stat
聊聊伪共享
2022-7-7 Leetcode 844.比较含退格的字符串
Pay close attention to the work of safety production and make every effort to ensure the safety of people's lives and property
简单好用的代码规范
MongoDB的导入导出、备份恢复总结
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来