当前位置:网站首页>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();
}
}
边栏推荐
猜你喜欢

Unity and webgl love each other

Gbu1510-asemi power supply special 15A rectifier bridge gbu1510

Microbial Health Network, How to restore Microbial Communities

双非大厂测试员亲述:对测试员来说,学历重要吗?

Cascade-LSTM: A Tree-Structured Neural Classifier for Detecting Misinformation Cascades-KDD2020

线上面试,该如何更好的表现自己?这样做,提高50%通过率~

【测试面试题】页面很卡的原因分析及解决方案

Cases of agile innovation and transformation of consumer goods enterprises

Personal statement of testers from Shuangfei large factory: is education important for testers?

微信论坛交流小程序系统毕业设计毕设(1)开发概要
随机推荐
Redhat下安装fedora
Why is network i/o blocked?
Network security - joint query injection
Develop those things: go plus c.free to free memory, and what are the reasons for compilation errors?
开发那些事儿:Go加C.free释放内存,编译报错是什么原因?
Byte hexadecimal binary understanding
微信论坛交流小程序系统毕业设计毕设(4)开题报告
网络安全-联合查询注入
Mitsubishi PLC SLmP (MC) protocol
今日创见|企业促进创新的5大关键要素
Network security - information query of operating system
Use JfreeChart to generate curves, histograms, pie charts, and distribution charts and display them to jsp-2
微信论坛交流小程序系统毕业设计毕设(3)后台功能
网络安全-对操作系统进行信息查询
消费品企业敏捷创新转型案例
./ setup. Insufficient sh permission
位运算(Bit Operation)
What are the similarities and differences between smart communities and smart cities
The author of LinkedList said he didn't use LinkedList himself
Unity与WebGL的相爱相杀