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

C++实现手写strstr函数

 

 strstr 函数用于在主字符串中查找子字符串的首次出现位置,以下是高效的实现方案:

 

KMP算法优化版本

 

#include <iostream>

#include <string>

#include <vector>

using namespace std;

 

// 计算KMP算法的部分匹配表(PMT)

vector<int> getNext(const string& pattern) {

    int m = pattern.length();

    vector<int> next(m, 0);

    

    for (int i = 1, j = 0; i < m; ) {

        if (pattern[i] == pattern[j]) {

            next[i++] = ++j;

        } else if (j > 0) {

            j = next[j - 1];

        } else {

            next[i++] = 0;

        }

    }

    return next;

}

 

// KMP算法实现strstr

const char* myStrstr(const char* haystack, const char* needle) {

    if (!ha

http://www.lqws.cn/news/446131.html

相关文章:

  • 什么是池化
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【环境搭建 / 点灯】
  • 数据库连接池(Druid、HikariCP)详解
  • Java 正则表达式高级用法
  • Debian配置Redis主从、哨兵
  • 啊啊啊啊啊啊啊啊code
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【外设开发】
  • 目标:创建一个钱包,挖一些币,然后查看余额
  • 算法导论第十八章 计算几何:算法中的空间艺术
  • 使用 mysql2/promise 模块返回以后,使用 await 返回数据总结
  • 声网对话式 AI:开启我的编程进阶之旅
  • CDH部署HDFS详细指南
  • Arduino入门教程​​​​​​​:12、WS2812B
  • 不会PLC,怎么学上位机?
  • 在 Mac 上配置 Charles,抓取 iOS 手机端接口请求
  • 写实数字人:开启教学新纪元,重塑教育生态
  • 股票心理学习篇:交易的人性弱点 - 频繁交易
  • 基于 Apache POI 实现的 Word 操作工具类
  • 目标检测之YOLOV11自定义数据使用OBB训练与验证
  • 用Java将PDF转换成GIF
  • 关于嵌入式编译工具链与游戏移植的学习
  • S32K328打断点调试进入main函数之前的准备工作
  • 如何保证MySQL与Redis数据一致性方案详解
  • 中科米堆全自动三维光学测量航空部件尺寸测量分析
  • 白热化买量竞争下,消除手游如何巧借“创意”破局?
  • OpenLayers 加载投影坐标GeoTIFF影像
  • 微信小程序canvas实现抽奖动画
  • react forwardRef和readux的connect冲突,导致ref.current获取不到值
  • Linux中的阻塞信号与信号原理
  • 主流防火墙策略绕过漏洞的修复方案与加固实践