LeetCode刷题笔记第1078题:Bigram分词

LeetCode刷题笔记第1078题:Bigram分词

题目:

给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。

对于每种这样的情况,将第三个词 "third" 添加到答案中,并返回答案。

想法:

通过空格对文本进行分词,遍历整个文本,找到相邻的first和second,如果这两个词后面还存在单词,则添加到结果列表中。文本遍历结束返回结果列表即可。

复制代码
class Solution:
    def findOcurrences(self, text: str, first: str, second: str) -> List[str]:
        words = text.split()
        return [words[i] for i in range(2, len(words)) if words[i-2] == first and words[i-1] == second]

上述代码中:

时间复杂度:O(n),因为遍历了整体文本

空间复杂度:O(n),因为要存储结果列表,需要额外空间

相关推荐
wabs66624 分钟前
关于动态规划【力扣1035.不相交的线和53.最大子数组和的思考】
算法·leetcode·动态规划
退休倒计时24 分钟前
【每日一题】LeetCode 199. 二叉树的右视图 TypeScript
算法·leetcode·typescript
可编程芯片开发28 分钟前
通过MATLAB实现PID控制器,积分分离控制器以及滑模控制器
算法
kebidaixu1 小时前
两轮BMS 短路保护策略详解
算法
zwenqiyu1 小时前
非线性字符串数据结构串讲
数据结构·c++·学习·算法
z小猫不吃鱼1 小时前
03 Optimal Brain Surgeon 详解:Hessian 剪枝为什么有效?
算法·机器学习·剪枝
硕风和炜2 小时前
【LeetCode: 1301. 最大得分的路径数目 + DP】
java·算法·leetcode·动态规划·dp·记忆化搜索
用户99045017780092 小时前
做了一个AI诊断,参考倪海厦中医理论,科学养生
算法
努力中的编程者2 小时前
STL-vector的模拟实现
开发语言·c++·算法·stl·vector
weixin_400005602 小时前
RL-frenet-trajectory-planning-in-CARLA
人工智能·深度学习·算法·机器学习·自动驾驶