当前位置: 首页 > 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.lryc.cn/news/572547.html

相关文章:

  • 12.10 在主线程或子线程中更新 UI
  • Tensorflow推理时遇见PTX错误,安装CUDA及CuDNN, 解决问题!
  • 编辑器及脚本案例
  • 【Redis】主从复制
  • Transformer结构介绍
  • 【K8S】详解Labels​​ 和 ​​Annotations
  • 记录存储的使用
  • 计量经济学(复习/自用/未完)
  • AIGC - Prompt Optimizer 提示词优化器
  • uni-app项目实战笔记16--实现头部导航栏效果
  • 【数字人开发】Unity+百度智能云平台实现短语音文本识别功能
  • OpenAI 公布《走向理解与预防失准泛化:由“角色特征”驱动的突现性失准》研究总结
  • 用“Gemini 2.0 Flash Preview Image Generation”模型修改图片,有哪些常用的提示词和方法
  • Spring MVC参数绑定终极手册:单多参对象集合JSON文件上传精讲
  • MCAL学习(6)——诊断、DCM
  • 股票心理学习篇:交易的人性弱点 - 频繁交易
  • 基于Python的机动车辆推荐及预测分析系统
  • 计算机网络零基础完全指南
  • ROS2 笔记汇总(3) 动作
  • Linux树莓派项目实战:外网访问、PWM呼吸灯、超声波测距与驱动开发
  • 《思维力:高效的系统思维》
  • 【开源模型】高考数学139分!小米MiMo开源模型:7B参数突出重围
  • MySQL 的 WITH ROLLUP 功能
  • MySQL: Invalid use of group function
  • swing综合案例.
  • Github 热点项目 [特殊字符]PHP性能革命!FrankenPHP让Laravel/Symfony飞起来!
  • (哈希)128. 最长连续序列
  • 5G核心网周期性注册更新机制:信令流程与字段解析
  • Python 数据分析与可视化 Day 1 - Pandas 数据分析基础入门
  • 算法导论第十九章 并行算法:解锁计算新维度