当前位置:网站首页>leetcode:648. 单词替换【字典树板子 + 寻找若干前缀中的最短符合前缀】
leetcode:648. 单词替换【字典树板子 + 寻找若干前缀中的最短符合前缀】
2022-07-07 12:35:00 【白速龙王的回眸】
分析
来个Trie记录字典树
然后一个个单词遍历,用cur去到当前层
如果遍历到某个c,没有在cur中,设置cur[c]为空, cur = cur[c]
结尾的时候来个#表示结束符
然后遍历sentence中的每个单词,如果遍历到#说明匹配到某个前缀了,进行前缀替换
如果发现当前c不在cur中,说明匹配不下去了,直接break
ac code
class Solution:
def replaceWords(self, dictionary: List[str], sentence: str) -> str:
# 字典树板子
trie = {
}
for word in dictionary:
cur = trie
for c in word:
# 新增分支
if c not in cur:
cur[c] = {
}
cur = cur[c]
# 结束标志
cur['#'] = {
}
words = sentence.split()
for i in range(len(words)):
# 在trie寻找最短前缀
cur = trie
for j, c in enumerate(words[i]):
# 匹配到第一个前缀
if '#' in cur:
words[i] = words[i][:j]
break
# 匹配失败
if c not in cur:
break
# 继续匹配
cur = cur[c]
#print(words)
return ' '.join(words)
总结
字典树板子
可以寻找若干前缀中的最短符合前缀
边栏推荐
- Common response status codes
- Huawei image address
- Selenium Library
- FC连接数据库,一定要使用自定义域名才能在外面访问吗?
- [untitled]
- [Reading stereo matching papers] [III] ints
- 多商户商城系统功能拆解01讲-产品架构
- Horizontal of libsgm_ path_ Interpretation of aggregation program
- c#通过frame 和 page 切换页面
- First choice for stock account opening, lowest Commission for stock trading account opening, is online account opening safe
猜你喜欢
UML sequence diagram (sequence diagram)
Use day JS let time (displayed as minutes, hours, days, months, and so on)
Hands on Teaching: XML modeling
UML 顺序图(时序图)
【历史上的今天】7 月 7 日:C# 发布;Chrome OS 问世;《仙剑奇侠传》发行
Details of redis core data structure & new features of redis 6
Docker deploy Oracle
小程序目录结构
内部排序——插入排序
设备故障预测机床故障提前预警机械设备振动监测机床故障预警CNC震动无线监控设备异常提前预警
随机推荐
【AI实战】应用xgboost.XGBRegressor搭建空气质量预测模型(二)
【愚公系列】2022年7月 Go教学课程 005-变量
Vmware共享主机的有线网络IP地址
3D Detection: 3D Box和点云 快速可视化
手里的闲钱是炒股票还是买理财产品好?
[Reading stereo matching papers] [III] ints
Codes de non - retour à zéro inversés, codes Manchester et codes Manchester différentiels couramment utilisés pour le codage des signaux numériques
Details of redis core data structure & new features of redis 6
今日睡眠质量记录78分
Hands on Teaching: XML modeling
Leetcode——236. 二叉树的最近公共祖先
Docker deploy Oracle
请问,我kafka 3个分区,flinksql 任务中 写了 join操作,,我怎么单独给join
gvim【三】【_vimrc配置】
Excusez - moi, l'exécution a été réussie lors de l'utilisation des données de puits SQL Flink à Kafka, mais il n'y a pas de nombre dans Kafka
C # use TCP protocol to establish connection
Cesium knows the longitude and latitude of one point and the distance to find the longitude and latitude of another point
UML 顺序图(时序图)
Excuse me, why is it that there are no consumption messages in redis and they are all piled up in redis? Cerely is used.
Csma/cd carrier monitoring multipoint access / collision detection protocol