图解字符串搜索算法(Boyer-Moore)

字符串的奇偶性 题目描述 我们把只有0和1组成的字符串叫做比特字符串。如果比特字符串中1的个数为奇数,则称这个比特字符串是奇性的。如果比特字符串中1的个数为偶数,则称这个比特字符串是偶性的。 注意: (1)0是偶数,所以不包含1的比特字符串是偶性的。 (2)0的个数不影响比特字符串的奇偶性。 输入 输入包含多组测试数据。每组数据由1~31个0、1组成,最后跟一个小写字母e或o,e表示此比特字符串应为偶性,o表示此比特字符串应为奇性。 当输入#时,表示输入结束。 输出 每组输入对应一个输出,你应该将最后的字母替换成0或 阅读详情

字符串搜索算法(Boyer-Moore)

BM算法简介

  • 1977年,德克萨斯大学的 Robert s.Boyer教授和J Strother moore教授发明了在字符串中搜索模式字符串的一种算法。
  • BM算法是精确字符串匹配算法,在字符串比对过程中采用从右往左比对方式。
  • BM算法基于“坏字符”和“好后缀”两种启发式。

BM算法相关概念

  • 坏字符(Bad-Character):在比对过程中,不匹配的字符。
  • 好后缀(Good-Suffix):如果字符串匹配失败,则之前已经成功匹配的部分称为好后缀。

在这里插入图片描述

字符 “I” 为本次匹配过程中产生的坏字符;后缀“E”、“LE”、“PLE”、“MPLE"为本次匹配过程中产生的好后缀。

“坏字符”启发规则

  • 模式字符串后移位数=坏字符对应的模式字符串的位置 - 坏字符在模式字符串前面出现的位置。
  • 当坏字符在模式字符串前部不存在时,则标记“坏字符在模式字符串前面出现的位置”为"-1”。
    在这里插入图片描述

例如在上面匹配过程中,“P”和"E"不匹配,则P为"坏字符",由于P出现在模式字符串的第6位(坐标从0开始),且坏字符P在模式字符串前面岀现的位置为4,所以下一次比对时,模式字符串需要后移6-4=2位。

BMH文本搜索算法 全称:Boyer-Moore-Horspool算法 实现从text中搜索pattern,返回其最小出现的位置; 算法思想: 1. 搜索文本时,从后到前搜索; 2. 如果碰到不匹配时,移动pattern,重新与text进行匹配; 关键:移动位置的计算shift_table 阅读详情

相关推荐

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 01

算法设计

weixin_49199313的博客 1501

永磁同步电机控制笔记:foc控制原理通俗讲义

引言 到此为止,永磁同步电机控制相关文章已经写了7篇,其中simulink仿真系列文章5篇,控制笔记系列文章2篇,恍惚间感觉少了一篇概论,在此插入一篇,也算是对入坑电机控制一年半来的知识梳理。 文章目录引言一、同步电机是怎么转起来的二、什么样的旋转磁场效率最高三、怎么精准控制旋转磁场的方向四、怎样调节dq轴电流 一、同步电机是怎么转起来的 永磁同步电机结构如下: 外围是定子绕组,中间为永磁体,设...

搞电机的博客 2万+

vllm运行过程中出现cuda out of memory

将长序列分解为多个小块,每个块分别处理。这样可以减少单次 Prefill 的计算量和显存占用,从而优化 TTFT 和显存使用效率。考虑使用 CPU 卸载(如 --cpu-offload-gb),将部分缓存卸载到 CPU 内存中,扩展 GPU 的虚拟内存。在大语言模型中,当输入序列很长(例如超过 1024 个 Token)时,Prefill 阶段的计算量会非常大。最后增加了enable-chunked-prefill参数和max_num_batched_tokens解决了问题。参数来进一步优化性能。

盛世芳华 3516

用Python实现一个猜密码的程序

我们用Python实现猜密码

sk6584631_sz的博客 1261

CANoe信号传输故障排查指南

本文提供了全面的CANoe信号传输故障排查指南,涵盖从硬件连接、通道配置到软件脚本与数据库加载的全链路诊断。针对常见的通道指示灯不亮、信号无法发送及ECU握手失败等问题,给出了基于CANoe工具和CAPL脚本的详细排查步骤与解决方案,帮助工程师系统化定位并解决实车测试中的通信故障。

ice55的博客 258

电路板功能测试系统-FCT for PCBA

电路板功能测试系统用于电路板组件(PCBA)的功能测试(FCT),满足自动化大批量生产的要求。  ● 用户根据自己需要定义测试步骤,灵活方便  ● 适合工业自动化大批量生产应用  ● 系统测试精度高,稳定可靠   一、电路板功能测试系统概述 电路板测试过程通常由多个步骤组成,每单个步骤中需要对多个物理量(电压、电流、电阻、频率、波形等)进行测试。在每个步骤测试时

6813

BrainVision Recorder 和 BrainVision Analyzer 2.2 安装

本篇为《EEG处理》系列博客的第二篇,该系列博客主要记录EEG信号处理的学习过程中的软件安装和学习过程,方便以后查阅。本篇为BrainVision Recorder 和 BrainVision Analyzer 2.2 的安装过程。 BrainVision Recorder 和 BrainVision Analyzer 2.2 安装安装前奏Brain Vision Analyzer分析软件 安装Brain Vision Recorder记录软件 安装推荐几款个人使用的科研软件 安装前奏 Brain V

梁小憨憨的博客 5063

Visual Studio 命令提示符工具区别与使用场景

Visual Studio会提供一系列命令提示符工具,这些工具应用在哪些场景呢?本文进行了相关介绍。

cicada15的博客 3493

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 开源入侵检测系统-Snort
下一篇: 基于存储的入侵检测技术
listone_sec
博客等级 码龄9年 13粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值