Leetcode 3093. Longest Common Suffix Queries

  • Leetcode 3093. Longest Common Suffix Queries
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3093. Longest Common Suffix Queries

1. 解题思路

这一题的话思路上其实就是一个Trie树的变体。

对于每一个wordsQuery当中的word,我们要在wordsContainer当中获取答案,我们只需要将wordsContainer构建成一个Trie树,就能够快速地获得我们所需的答案了。

具体关于Trie树的内容,我们之前已经写过一个博客(经典算法:Trie树结构简介)对其进行过介绍了,这里我们就不赘述了,唯一需要注意的是,这里由于我们不是完全匹配单词,而是匹配最长公共suffix,因此我们需要做一些变体,具体来说就是在trie树的每一个节点都记录下该节点对应的单词。

此外,由于相同suffix的单词需要有一定的顺序关系,因此,我们在加入Trie树时需要对每一个节点的单词进行一下顺序的考察,对此,我们的处理方式是提前进行一下排序即可。

2. 代码实现

给出python代码实现如下:

class Trie:def __init__(self):self.trie = {}self.init = -1def add_word(self, word, idx):trie = self.trieif self.init == -1:self.init = idxfor c in word:_, trie = trie.setdefault(c, (idx, {}))returndef find(self, word):trie = self.trieans = self.initfor c in word:if c not in trie:breakans, trie = trie[c]return ansclass Solution:def stringIndices(self, wordsContainer: List[str], wordsQuery: List[str]) -> List[int]:words = [(len(w), i, w) for i, w in enumerate(wordsContainer)]words = sorted(words)trie = Trie()for _, i, word in words:trie.add_word(word[::-1], i)ans = [trie.find(word[::-1]) for word in wordsQuery]return ans

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 教程系列之Redis 简介(一)

Redis: Remote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。 Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value…

Spring Cloud四:微服务治理与安全

Spring Cloud一:Spring Cloud 简介 Spring Cloud二:核心组件解析 Spring Cloud三:API网关深入探索与实战应用 文章目录 一、服务注册中心的选型与最佳实践1. 主流服务注册中心概述2. 最佳实践建议(1)、选型建议(2)、高可用性与稳定性1). 高可…

Linux安装iptables 防火墙

安装iptables Ubuntu: sudo apt-get update sudo apt-get install iptables Centos: sudo yum install iptables 开启:service iptables start 关闭:service iptables stop dpkg -l | grep iptables --查看iptables 是否安装

北京密云广电许可证办理要求与流程

北京密云广电许可证办理攻略:要求与流程全解析 一、引言 各位老板好,我是经典世纪胡云帅,随着广播电视行业的快速发展,越来越多的企业和个人希望进入这一领域,开展节目制作、传播等业务。而在北京密云,这一…

二进制王国(蓝桥杯备赛)【sort/cmp的灵活应用】

二进制王国 题目链接 https://www.lanqiao.cn/problems/17035/learning/?contest_id177 题目描述 思路 这里就要灵活理解字典序排列,虽然string内置可以直接比较字符串字典序,但是在拼接时比较特殊,比如 11的字典序小于110,但…

HTTP --- 下

目录 1. HTTP请求方式 1.1. HTML 表单 1.2. GET && POST方法 1.2.1. 用 GET 方法提交表单数据 1.2.2. 用 POST 方法提交表单数据 1.2.3. 总结 1.3. 其他方法 2. HTTP的状态码 2.1. 重定向 2.1.1. 临时重定向 && 永久重定向 2.1.2. 302 &&…

【Vue3笔记02】Vue3项目工程中使用axios网络请求库实现前后端数据通信

这篇文章,主要介绍Vue3项目工程中如何使用axios网络请求库实现前后端数据通信【知识星球】。 目录 一、axios依赖 1.1、下载axios依赖 1.2、创建axios工具类

【MySQL系列】Public Key Retrieval is not allowed

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python灰帽子网络安全实践

教程介绍 旨在降低网络防范黑客的入门门槛,适合所有中小企业和传统企业。罗列常见的攻击手段和防范方法,让网站管理人员都具备基本的保护能力。Python 编程的简单实现,让网络运维变得更简单。各种黑客工具的理论和原理解剖,让人知…

c++结束输入

在C语言中,停止输入通常意味着结束从标准输入(通常是键盘)读取数据的操作。这通常通过检测一个特定的输入条件来实现,如一个特殊的EOF(文件结束)标记,或者当读取某些特定的值时结束循环。 以下…

css与鼠标光标指针相关的属性有哪些?

CSS中与鼠标光标相关的属性以下几个: cursor: 设置鼠标光标的样式。常见的取值有: auto:浏览器自动决定光标样式。pointer:手型光标,表示链接可点击。default:默认光标样式。text:文本光标&…

Acwing算法提高课-DP-数字三角形模型

摘花生 见另一篇文章: Acwing数学与简单DP(二) 最低通行费 原题链接:https://www.acwing.com/problem/content/1020/ 类似于上面的摘花生,不过摘花生求的是集合的MAX,最低通行费求的是集合的MIN。 但是&am…

基于Matlab的眼底图像血管分割,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

【webView中打开pdf文件,再点击设置切换页面后,再点击返回,则pdf无法正常显示,显示空白?】

https://developers.weixin.qq.com/community/develop/doc/000ea83ba5cb58a586feb827c59c00跟这个问题一样 解决办法就是在onshow中奖地址清了重新赋值&#xff0c;就是缓存的问题 <div><web-view :src"pdfurl" :webview-styles"webviewStyles" …

车道线检测论文:《Ultra Fast Structure-aware Deep Lane Detection》

该论文标题为《Ultra Fast Structure-aware Deep Lane Detection》&#xff0c;作者是浙江大学计算机科学与技术学院的Zequn Qin、Huanyu Wang和Xi Li。论文提出了一种新颖的、简单而有效的车道检测方法&#xff0c;旨在解决具有挑战性场景下的车道检测问题&#xff0c;并实现极…

借用QStyledItemDelegate 在DataView中创建各种子控件

在Model/View 中&#xff0c;二维表格的输入方式可能各种各样&#xff0c;我们需要在单元格嵌入各种类型控件&#xff0c;但是能把各种控件整合一个委托类吗&#xff1f;本文进行了尝试。将创建各种控件的逻辑整合到一个委托类。效果图如下&#xff1a; 本文实现了在DataView 的…

Android 带html标签文本添加自定义超链接跳转

Android 带html标签文本添加自定义超链接跳转 背景&#xff1a; 在项目开发过程中&#xff0c;需要在用户协议等文本中加入超链接跳转到APP内的其他界面&#xff0c;正常情况下我们都会知道用Html.fromHtml来识别html标签中的超链接&#xff0c;比如<a href"http://www…

【SpringMVC】知识汇总

SpringMVC 短暂回来&#xff0c;有时间就会更新博客 文章目录 SpringMVC前言一、第一章 SpingMVC概述二、SpringMVC常用注解1. Controller注解2. RequestMapping注解3. ResponseBody注解4. RequestParam5. EnableWebMvc注解介绍6. RequestBody注解介绍7. RequestBody与RequestP…

Echarts功能记录

基础配置 工具箱toolbox 对应功能 案例中使用到的第三方脚本

SpringBoot 启用 Https,生成 jks 自签证书

使用 Java 提供的工具生成 jks 自签证书 keytool 是 Java Development Kit (JDK) 中的一个工具&#xff0c;用于管理公钥和私钥对以及相关的证书。以下命令用于生成一个密钥对并将其存储在密钥库中&#xff1a; keytool -genkeypair -alias www.example.com -keyalg RSA -key…