Rabin Karp 字符匹配算法
Rabin Karp 字符匹配算法
相关题目:
187. 重复的DNA序列
28. 找出字符串中第一个匹配项的下标
class FindRepeatedDnaSequences:"""187. 重复的DNA序列https://leetcode.cn/problems/repeated-dna-sequences/description/"""def solution(self, s: str) -> List[str]:nums = [0] * len(s)for i in range(len(nums)):if s[i] == 'A':nums[i] = 0elif s[i] == 'G':nums[i] = 1elif s[i] == 'C':nums[i] = 2elif s[i] == 'T':nums[i] = 3# 记录重复出现的哈希值seen = set()# 记录重复出现的字符串结果res = set()# 数字位数L = 10# 进制R = 4# 存储 R^(L - 1) 的结果RL = R ** (L - 1)# 维护滑动窗口中字符串的哈希值windowHash = 0# 滑动窗口代码框架,时间 O(N)left, right = 0, 0while right < len(nums):# 扩大窗口,移入字符,并维护窗口哈希值(在最低位添加数字)windowHash = R * windowHash + nums[right]right += 1# 当子串的长度达到要求if right - left == L:# 根据哈希值判断是否曾经出现过相同的子串if windowHash in seen:# 当前窗口中的子串是重复出现的res.add(s[left:right])else:# 当前窗口中的子串之前没有出现过,记下来seen.add(windowHash)# 缩小窗口,移出字符,并维护窗口哈希值(删除最高位数字)windowHash -= nums[left] * RLleft += 1# 转化成题目要求的 List 类型return list(res)
class StrStr:"""28. 找出字符串中第一个匹配项的下标https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/description/"""def solution(self, haystack: str, needle: str) -> int:# 文本串txt = haystack# 模式串pat = needle# 需要寻找的子串长度为模式串 pat 的长度L = len(pat)# 仅处理 ASCII 码字符串,可以理解为 256 进制的数字R = 256# 存储 R^(L - 1) 的结果RL = R ** (L - 1)# 维护滑动窗口中字符串的哈希值windowHash = 0# 计算模式串的哈希值patHash = 0for i in range(len(pat)):patHash = R * patHash + ord(pat[i])# 滑动窗口代码框架left, right = 0, 0while right < len(txt):# 扩大窗口,移入字符(在最低位添加数字)windowHash = R * windowHash + ord(txt[right])right += 1# 当子串的长度达到要求if right - left == L:# 根据哈希值判断窗口中的子串是否匹配模式串 patif patHash == windowHash:# 找到模式串print("找到模式串,起始索引为", left)return left# 缩小窗口,移出字符(删除最高位数字)windowHash = windowHash - ord(txt[left]) * RLleft += 1# 没有找到模式串return -1相关文章:
Rabin Karp 字符匹配算法
Rabin Karp 字符匹配算法 相关题目: 187. 重复的DNA序列 28. 找出字符串中第一个匹配项的下标 class FindRepeatedDnaSequences:"""187. 重复的DNA序列https://leetcode.cn/problems/repeated-dna-sequences/description/"""def sol…...
星宿UI2.51资源付费变现小程序 支持流量主广告投放
目前,最新版的星宿UI是2.51版本。要搭建星宿UI,您需要准备备用域名、服务器和微信小程序账号。星宿UI提供了多项功能,包括文章展示、文章分类、资源链接下载和轮播图等。此外,还支持直接下载附件功能。这些功能使得星宿UI非常适合…...
Telnet 测试 UDP 端口?
Telnet 并不支持 UDP 端口的测试,可以使用 nc 命令来进行测试。nc 命令两种都支持: TCP # nc -z -v -u [hostname/IP address] [port number] # nc -z -v 192.168.10.12 22 Connection to 192.118.20.95 22 port [tcp/ssh] succeeded! UDP # nc -z -v…...
【论文复现】常见问题
1. 提取出错 首先检查嵌入时的像素值是否越界(0-255),如果越界则在提取的时候无法正确提取嵌入的时候注意整数除法和浮点数除法向下取整结果不一样,floor(int(10)/16)1,floor(double(10)/16)0 2. 常用代码部分 1.生…...
Uniapp开发 购物商城源码 在线电商商城源码 适配移动终端项目及各小程序
lilishop电商商城系统 商城移动端,使用Uniapp开发,可编译为所有移动终端项目及各小程序 源码下载:https://download.csdn.net/download/m0_66047725/88487579 源码下载2:关注我留言...
xml schema中的sequence的含义
https://www.w3.org/TR/xmlschema-1/#element-sequence xml schema中的sequence的含义:包含的元素必须按规定的顺序出现。通过属性maxOccurs和minOccurs可以定义最多、最少出现的次数。最多可以定义不限制次数,最少可以定义0次。默认是最少出现1次&…...
详解 KEIL C51 软件的使用·建立工程
单片机要运行,就必须将程序代码下载到程序存储器内部,但是在写进单片机之前要先将你写 的程序转换成*.hex 或*.bin 的文件.不同系列的单片机都有不同的软件对其进行编绎,而 keil Cx51 是德国开发的一个专为 51 系列单片机提供的软件开发平台,基本上现在的所有 51 系列内核的单片…...
2023年03月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 已知一个列表lst = [2,3,4,5,6],lst.append(20),print(lst)的结果是?( )(2分) A.[10,2,3,4,5,6,20] B.[20,2,10,3,4,5,6] C.[2,3,4,5,6,20] D.[2,3,4,5,6,10,20] 答案:C 第2…...
nginx 代理服务时遇到的问题
一 nginx代理多个服务,且服务之间需要相互通信 多个服务运行在docker容器中,nginx同样在docker容器中 比如前端服务需要请求后端服务,用户请求服务器80或者443 ,nginx代理请求到前端服务,前端服务业务请求到后端服务…...
利用共享台球室小程序系统提升用户体验
随着移动互联网的普及,越来越多的用户倾向于使用手机应用来解决生活中的问题。共享台球室作为一个结合了传统与现代元素的项目,也需要借助移动小程序的力量来提升用户体验。本文将探讨如何利用共享台球室小程序系统提升用户体验。 一、提供便捷的服务 …...
U-Mail海外邮件中继帮您解决企业邮件退信难题
过去一年,国内外形势严峻复杂,但中国外贸顶住压力、爬坡过坎,进出口规模冲破40万亿元大关,高达42万亿元人民币,中国连续6年位居货物贸易第一大国。随着我国疫情防控措进入新阶段,“拼经济”正在成为各地的一…...
ImageJ灰度值量化分析 实用技巧——免疫组化分析(定量分析篇)
在临床病理诊断中, 免疫组织化学( Immunohistochemistry, IHC) 是一种很重要的技术和手段。 免疫组化标记时细胞阳性着色程度取决于抗原含量、分布密度和标记方法及其敏感性。 一般而言,抗原含量越多,分布密度越高,阳性结果显色…...
了解STM32看门狗定时器的工作原理和原则
STM32 系列微控制器的看门狗定时器 (Watchdog Timer,WWDG) 是一种重要的硬件资源,用于检测系统的异常状态,并在发生异常时执行特定的操作,以确保系统能够正常运行。在本文中,我将详细介绍 STM32 看门狗定时器的工作原理…...
【2014年数据结构真题】
41. (13分)二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。 给定一棵二叉树T,采用二叉链表存储,结点结构如下: 其中叶结点的weight域保存该结点的非负权值。 设root为指向T的根结点的指针, 请设计求T 的WPL…...
PostgreSQL基本操作
目录 1.源码安装PostgreSQL 1.1.前置条件(root下操作) 1.1.1.卸载yum安装的postgresql 1.1.2.创建postgres用户 1.1.3.安装部分依赖 1.1.4.源码安装uuid 1.2.安装PostgreSQL 1.2.1.使用postgres用户管理PostgreSQL 1.2.2.下载解压postgres12源码…...
hadoop 大数据环境配置 ssh免密登录 centos配置免密登录 hadoop(四)
1. 找到.ssh文件夹 cd ~ # 在.ssh文件夹下生成 # cd .ssh 2. 生成私钥公钥命令: ssh-keygen -t rsa3. 发送到需要免密机器: # hadoop23 是我做了配置。在host配置得机器ip和名称得映射 ssh-copy-id hadoop23 4. 成功...
Django 的国际化与本地化详解
概要 随着全球化的发展,为 Web 应用提供多语言支持变得日益重要。Django 作为一个功能强大的 Web 框架,提供了一套完整的国际化(i18n)和本地化(l10n)工具,使得开发多语言应用变得简单。本文将详…...
Java19新增特性
前言 前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15、Java16、Java17、Java18 的特性进行了介绍,对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 Java14新增特性 Java15新增特…...
[文件读取]metinfo_6.0.0 任意文件读取漏洞复现
1.1漏洞描述 漏洞编号--漏洞类型文件读取漏洞等级⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐漏洞环境windows漏洞名称MetInfo 6.0.0 任意文件读取漏洞 MetInfo 是一套使用PHP 和MySQL 开发的内容管理系统。MetInfo 6.0.0 版本中的 /app/system/include/module/old_thumb.class.php 文件存在任意文件…...
[量化投资-学习笔记015]Python+TDengine从零开始搭建量化分析平台-量化知识点汇总
之前的章节介绍了多个技术分析指标,以下进行一个简单的总结。 看过之前章节的同学就可以不用打开了。 技术指标 MAEMAMACDCCIATRKDJ MA 最基础的技术指标,对一段周期内的收盘价进行简单平均,是一切指标的基础。 def calc_ma(period,ma):ma_…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
