当前位置: 首页 > 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

相关文章:

  • 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语言圣经》结构体
  • 帮做3d模型的网站/百度热搜广告位
  • 关于花卉的网站怎么做/在线分析网站
  • 重庆网页制作工作室/seo是什么服务器
  • 网站空间数据库需要多大/福州网站建设团队
  • html企业网站源码/seo线下培训班
  • 开源wiki做网站/seo优化排名服务