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

在串的简单模式匹配中,当模式串位j与目标串位i比较时,两字符不相等,则i的位移方式是?

这个问题是在考察 串的简单模式匹配,也就是所谓的 朴素匹配算法(Brute-Force Matching),它的基本思想是从目标串(主串)中逐个字符尝试与模式串进行匹配。


✅ 场景设定:

  • 模式串:P[0 ... m-1],当前匹配到 P[j]
  • 目标串:T[0 ... n-1],当前匹配到 T[i]
  • P[j] ≠ T[i] 时——匹配失败

✅ 简单模式匹配的位移策略:

匹配失败后,目标串的指针 i 要回退,而不是简单地向前推进。

具体来说:

  • 匹配前:从目标串 T[s] 位置开始尝试匹配 P[0]
  • 匹配中:如果已经匹配了前 j 个字符,但 P[j] ≠ T[i],那么:
    • 将目标串的指针回退至:i = s + 1
    • 模式串指针回退至:j = 0
    • 换句话说,目标串从下一个位置重新开始匹配,模式串从头开始匹配

✅ 简单总结:

P[j] ≠ T[i] 时,目标串的 i 回到起始匹配位置 s 的下一个位置,即:

i ← s + 1,j ← 0

或者理解为:

i ← i - j + 1,j ← 0


✅ 举例说明:

目标串 T: A B C D E
模式串 P: C D F

匹配尝试:

T[0] ≠ P[0] → i = 1,j = 0  
T[1] ≠ P[0] → i = 2,j = 0  
T[2] = P[0]  
T[3] = P[1]  
T[4] ≠ P[2] → 匹配失败,i = 3(从下一个位置继续),j = 0

✅ 答案:

i ← i - j + 1

(匹配失败时,目标串从下一个起点继续匹配)

http://www.xdnf.cn/news/106129.html

相关文章:

  • 快速生成安卓证书并打包生成安卓apk(保姆教程)
  • HCIP-OSPF综合实验
  • Linux网络编程 从集线器到交换机的网络通信全流程——基于Packet Tracer的深度实验
  • 第十篇:系统分析师第三遍——7、8章
  • Kubernetes服务自动注册Consul全攻略 - 基于consul-register的实践指南
  • vue3:十一、主页面布局(修改顶部导航栏样式-左侧,页面名称设置)
  • Vue3:大纲思路
  • 深入解析C++ STL Stack:后进先出的数据结构
  • Linux CAN 驱动浅析
  • YOLO11改进-Backbone-引入TransXNet替换YOLO backbone 学习全局和局部动态信息,提高检测精度
  • 面试经历(一)雪花算法
  • gem5 笔记01 gem5 基本应用流程
  • 【敏矽微ME32G030系列】介绍、环境搭建、工程测试
  • 2022 年 9 月青少年软编等考 C 语言六级真题解析
  • 基于PaddleOCR对图片中的excel进行识别并转换成word(一)
  • 第50讲:AI+农业金融与风险预测场景实战
  • 【QT】信号与槽中多个按钮(pushbutton)共用一个槽函数的两种实现方式
  • 解决 Spring Boot + MyBatis 项目迁移到 PostgreSQL 后的数据类型不匹配问题
  • 全面解析 classification_report:评估分类模型性能的利器
  • 模型 观测者效应
  • 11、认识redis的sentinel
  • 程序员思维体操:TDD修炼手册
  • [LangGraph教程]LangGraph03——为聊天机器人添加记忆
  • 大模型评估方法与工程实践指南:从指标设计到全链路优化
  • NHANES指标推荐:CTI
  • 熊海CMS Cookie脆弱
  • MySQL数据库精研之旅第十期:打造高效联合查询的实战宝典(一)
  • cJSON
  • 【泊松过程和指数分布】
  • Leetcode刷题记录17——三数之和