当前位置: 首页 > 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.dtcms.com/a/254931.html

相关文章:

  • C++ inline变量
  • Linux树莓派项目实战:外网访问、PWM呼吸灯、超声波测距与驱动开发
  • 记录存储的使用
  • 股票心理学习篇:交易的人性弱点 - 频繁交易
  • Windows 和 macOS 串口调试软件
  • MCAL学习(6)——诊断、DCM
  • Python-循环结构解析
  • WPF xaml 中设置ResourceDictionary中的全局变量
  • 【机械视觉】Halcon—【十五、一维码(条形码)和二维码识别】
  • 【八股消消乐】构建微服务架构体系—保证服务高可用
  • 华为OD机试_2025 B卷_玩牌高手(Python,100分)(附详细解题思路)
  • 从C++编程入手设计模式——装饰器模式
  • Dify 推出全新版本!Dify-v1.4.3本地部署教程:开发效率飙升,快速打造 AI 应用!
  • Mysql5.7 自动备份恢复示例
  • 《Kubernetes》Pod详解+Pod控制器
  • 用“Gemini 2.0 Flash Preview Image Generation”模型修改图片,有哪些常用的提示词和方法
  • 计算机网络零基础完全指南
  • 九尾狐编程语言新算法“超维时空演算体”
  • 加密货币:什么是稳定币?
  • 《Go语言圣经》结构体
  • 宽度优先遍历(bfs)(3)——最小路径问题
  • RTSP播放器低延迟实践:一次对毫秒级响应的技术探索
  • SpringBoot扩展——发送邮件!
  • flink的多种部署模式
  • Kaggle-Plant Seedlings Classification-(多分类+CNN+图形处理)
  • 解决“在EFI系统上,Windows只能安装到GPT磁盘“错误
  • DINO-R1:激励推理能力的视觉基础模型
  • 最简单的方式突破远程桌面封锁
  • 算法导论第十九章 并行算法:解锁计算新维度
  • Matplotlib 绘图库使用技巧介绍