当前位置:网站首页>648. 单词替换
648. 单词替换
2022-07-07 21:50:00 【彼淇梁】
648. 单词替换【中等题】【每日一题】
思路:
将词根按长度进行排序后
遍历每个单词,对当前单词,遍历词根列表,筛选出词根中第一个单词前缀,并将当前单词更新为这个前缀。
最后将所有更新过的单词用空格分隔拼成字符串返回即可。
代码:
class Solution {
public String replaceWords(List<String> dictionary, String sentence) {
//对词根词典按长度排序
dictionary.sort(Comparator.comparingInt(String::length));
//将句子按空格切分
String[] words = sentence.split(" ");
int n = words.length;
StringBuilder ans = new StringBuilder();
for (int i = 0; i < n; i++) {
//遍历单词数组中每个单词
//记录当前单词的长度
int word_n = words[i].length();
//遍历词根字典,筛选出当前单词的第一个前缀并将其更新到单词数组的当前位置
for (String prefix : dictionary) {
//记录当前词根长度
int pre_n = prefix.length();
//如果词根长度大于单词,则其不可能为前缀,由于词根列表根据长度从小到大排序,因此当前词根长度大于单词,那么后续就不用继续循环了,后边词根长度全部大于单词,因此当前单词无在词根字典中的前缀,单词保持不变
//如果词根长度等于单词,那假如词根与单词相等,那么单词更新为词根,相当于不变;假如词根与单词不相等,那么单词依然保持不变
//综上,词根长度 >= 单词长度时,单词保持不变,可以理解为 没有在词根词典中的前缀
if (pre_n >= word_n){
break;
}
//此时词根长度一定小于单词长度,如果词根是单词的前缀,那么将单词更新为前缀,由于题目要求用最短的词根替换,因此循环退出
if (words[i].startsWith(prefix)){
words[i] = prefix;
break;
}
//如果词根不是单词的前缀,则继续循环筛选下一个词根
}
//将处理过的单词 追加到 ans后边,并追加空格
ans.append(words[i]).append(" ");
}
//将ans转为字符串并去掉尾部空格后返回
return ans.toString().trim();
}
}
边栏推荐
- Kubernetes' simplified data storage storageclass (creation, deletion and initial use)
- [untitled] reprint melting ice - track icedid server with a few simple steps
- What is fake sharing after filling the previous hole?
- Wechat forum exchange applet system graduation design (5) assignment
- Txt file virus
- Why is network i/o blocked?
- 定位到最底部[通俗易懂]
- One question per day - pat grade B 1002 questions
- Interview questions: how to test app performance?
- What does the model number of asemi rectifier bridge kbpc1510 represent
猜你喜欢
![Cause analysis and solution of too laggy page of [test interview questions]](/img/33/2c2256fd98b908ddaf5573f644ad7f.png)
Cause analysis and solution of too laggy page of [test interview questions]

肠道里的微生物和皮肤上的一样吗?

数字藏品加速出圈,MarsNFT助力多元化文旅经济!

Binary tree

Cases of agile innovation and transformation of consumer goods enterprises

安踏DTC | 安踏转型,构建不只有FILA的增长飞轮

Two minutes, talk about some wrong understandings of MySQL index

The author of LinkedList said he didn't use LinkedList himself

Wechat forum exchange applet system graduation design (5) assignment

Develop those things: go plus c.free to free memory, and what are the reasons for compilation errors?
随机推荐
网络安全-对操作系统进行信息查询
Digital collections accelerated out of the circle, and marsnft helped diversify the culture and tourism economy!
Unity与WebGL的相爱相杀
知识点滴 - PCB制造工艺流程
Understand the session, cookie and token at one time, and the interview questions are all finalized
微信论坛交流小程序系统毕业设计毕设(1)开发概要
Locate to the bottom [easy to understand]
微信论坛交流小程序系统毕业设计毕设(2)小程序功能
Network security - install CentOS
Qt Graphicsview图形视图使用总结附流程图开发案例雏形
Brush question 6
智慧社區和智慧城市之間有什麼异同
微信论坛交流小程序系统毕业设计毕设(3)后台功能
网络安全-联合查询注入
Transparent i/o model from beginning to end
./ setup. Insufficient sh permission
Brush question 4
十三、系统优化
智慧社区和智慧城市之间有什么异同
[network] Introduction to C language