当前位置: 首页 > news >正文

Leetcode 3598. Longest Common Prefix Between Adjacent Strings After Removals

  • Leetcode 3598. Longest Common Prefix Between Adjacent Strings After Removals
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3598. Longest Common Prefix Between Adjacent Strings After Removals

1. 解题思路

这一题的话思路上就是一个累计数组的思路。考察任意一个位置 i i i上的答案,事实上就是考察 i − 1 i-1 i1之前所有相邻字符串的最大值与 i + 1 i+1 i+1之后所有相邻元素的最大值,以及 i − 1 i-1 i1 i + 1 i+1 i+1两个字符串的最大值,因此,我们只需要提前算好这些值即可快速求得任意位置上的答案了。

2. 代码实现

给出python代码实现如下:

class Solution:def longestCommonPrefix(self, words: List[str]) -> List[int]:n = len(words)if n == 1:return [0]if len(set(words)) == 1 and n > 2:return [len(words[0]) for _ in range(n)]def count_prefix(w1, w2):if len(w1) > len(w2):return count_prefix(w2, w1)ans = 0for ch1, ch2 in zip(w1, w2):if ch1 != ch2:breakans += 1return ansadj = [count_prefix(words[i], words[i+1]) for i in range(n-1)]left = [0 for _ in range(n)]right = [0 for _ in range(n)]for i in range(n-1):left[i+1] = max(left[i], adj[i])right[n-2-i] = max(right[n-1-i], adj[n-2-i])tri = [count_prefix(words[i-1], words[i+1]) for i in range(1, n-1)]ans = []for i in range(n):if i == 0:m = right[1]elif i == n-1:m = left[n-2]else:m = max(left[i-1], right[i+1])ans.append(max(m, tri[i-1]) if 1 <= i < n-1 else m)return ans

提交代码评测得到:耗时1000ms,占用内存40.39MB。

相关文章:

  • 滑块验证码(1)
  • 【blender】使用bpy对一个obj的不同mesh进行不同的材质贴图(涉及对bmesh的操作)
  • ViTMatte:利用预训练的基础视觉Transformer提升图像抠图性能
  • 云计算在布莱克-斯科尔斯模型中的应用:解析解、蒙特卡洛模拟与可视化-AI云计算数值分析和代码验证
  • Node.js特训专栏-实战进阶:11. Redis缓存策略与应用场景
  • 【更新至2024年】1999-2024年各省城镇居民人均消费支出数据(无缺失)
  • 八股文——JAVA基础:String s1 = new String(“abc“);这句话创建了几个字符串对象?
  • window11 本地安装 MySQL8.0
  • SAP顾问职位汇总(第26周)
  • 数据分析标普500
  • 实现win系统控制局域网的linux主机桌面
  • 现代 JavaScript (ES6+) 入门到实战(三):字符串与对象的魔法升级—模板字符串/结构赋值/展开运算符
  • 知攻善防靶机 Windows 挖矿事件应急
  • 通过交互式网页探索传输现象-AI云计算数值分析和代码验证
  • 博图SCL编程利器:CASE OF 语句详解与应用指南之设备运行模式选择框架
  • pytorch学习—4.反向传播(用pytorch算梯度)
  • 设备预测性维护和异常检测系统设计方案
  • 什么是 Event Loop?
  • 自然语言处理NLP期末复习
  • web3区块链-ETH以太坊