28. 一行实现 strStr() (附上 string容器 的 find函数 的使用说明)

C++字符串查找:从find()到性能优化与多编码处理 字符串查找是编程中的基础操作,其核心原理是在主串中定位子串的首次出现。在C++中,这一操作不仅关乎功能实现,更直接影响程序的性能与健壮性。标准库的std::string::find()提供了安全便捷的接口,但其底层通常是朴素的暴力匹配算法,在处理超长文本时可能成为性能瓶颈。对于性能关键场景,C++17引入了std::boyer_moore_searcher等更高效的搜索器。此外,处理多字节编码(如UTF-8下的中文字符串)时,开发者需明确字节匹配与字符匹配的区别,避免因编码不一致导致的查找失败或乱码问题。在 阅读详情

实现 strStr() 函数。

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。

示例 1:

输入: haystack = “hello”, needle = “ll”
输出: 2

示例 2:

输入: haystack = “aaaaa”, needle = “bba”
输出: -1

说明:
当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。

执行用时 :
0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗 :
9.3 MB, 在所有 C++ 提交中击败了20.27%的用户

class Solution {
public:
    int strStr(string haystack, string needle) {
        return haystack.find(needle,0);
    }
};

拓展:

在这里插入图片描述

另外,当needle="",会返回0。

01|无代码开发 | 如何使用Zion实现导航网站制作 以上就是我制作导航网站的心得,分享给大家,作为一个小白想要独立搭建一个网站还是比较困难的,而在Zion不仅可以用可视化的方法进行搭建,甚至还可以一键发布,不用考虑服务器域名啥的问题,真是太方便了。 阅读详情

相关推荐

简化神经元模型6 -- Hindmarsh-Rose Model

简化神经元模型 6 Hindmarsh-Rose Model

weixin_73557167的博客 1426

yuzu Switch 模拟器怎么装:密钥、固件与画质一次配好

想在电脑上重温《旷野之息》,yuzu 是最成熟的开源方案:C++ 编写,覆盖 Windows、Linux、Android 三大平台,官方构建直接可用。把密钥和固件这两件事办完,你就离启动第一个游戏只差一个游戏文件。本文按“装好 → 配好 → 跑稳”三步走,全部操作可照抄。 ## 📋 前置检查:先确认你的硬件底线 对照下面四条,缺一条都会明显掉帧或干脆起不来: | 底线 | 要求 | 缺了会

gitblog_00373的博客 512

新建菜单Office被替换为腾讯文档 - 解决方案

右键新建菜单中的Office被替换为腾讯文档。原因是安装了腾讯文档软件,此软件安装时会自动将新建菜单中的Office替换为腾讯文档,下文介绍解决方案。

NSJim的博客 2927

strstr函数c语言库函数_C++常用函数整理

1、s.c_str();C语言中没有string类型,C语言接口函数(例:strstr())的string需要转char*。用法:string转char*:c_str() 2、strstr(str1.c_str(),str2);C语言中的函数,在字符串中查找另一个字符串是否存在,不存在返回false,存在返回true。char * strstr(const char *str1, const ch...

weixin_33512961的博客 725

微信小程序启用蓝牙设备特征值变化时的notify功能

注意:这里的serviceUUID、notifyCharacteristicUUID 我会在后面写入数据时做重点说明。isNotifyBLECharacteristic:false, //是否启用蓝牙设备服务特征 notify。二、启用蓝牙设备特征值变化时的notify功能。下一篇 将继续介绍 微信小程序蓝牙设备写入数据。

wsk198726的专栏 1171

28、基准剂量法:原理、应用与计算详解

本文详细介绍了基准剂量法(BMD)的原理、在监管机构中的应用以及具体的计算方法。内容涵盖样本量与BMD的关系、主要监管机构如EPA对BMD的应用、BMD的模型选择与数据拟合过程、拟合优度评估、下置信限(BMDL)计算,以及实验设计对BMD结果的影响。同时,还讨论了剂量指标和响应选择的关键问题,为理解和应用基准剂量法提供了全面的参考。

info6的博客 280

string类,难吗?这不简简单单!

这里再为大家补充一个知识:就是string类类型的对象中的成员变量里有两个可以存储元素的变量,一个是数组指针,这个数组指针指向堆中的一块空间,还有一个_buff数组(char类型的),这个数组的空间有16个空间,多加一个数组的意思是说,当字符串的有效元素个数<=16时,这个字符串是存放在_buff数组里面的,反之,存放就会存放到数组指针指向的那块空间中,也就是说,如果我们在不做任何初始化的情况下,调用capacity()这个函数的话,得到的空间数是16,而不是0(这就完美解释了5.2中最后的那个问题)。

2301_81390458的博客 2436

Python 爬虫实战:爬取今日头条文章与阅读量数据

本文详细介绍了基于Python爬取今日头条文章与阅读量数据的完整方案。通过分析今日头条API接口,采用Requests+正则表达式技术实现数据抓取,重点解决加密参数构造、请求头模拟、反爬规避等核心问题。文章包含文章列表获取、详情数据提取、互动数据采集等完整流程,并提供数据存储与基础分析方法。同时强调合规使用爬虫技术,控制爬取频率,避免干扰平台运营。该方案可为内容传播分析、用户兴趣研究提供数据支持,但需注意接口参数更新和反爬机制变化,适时调整代码实现。

2503_91057718的博客 2519

C++-容器-string:查找子字符串是否存在【a.find(b) == -1】

功能为在string对象中,查找参数string类型的字符串是否存在,如果存在,返回起始位置。不存在则返回 string::npos。在C语言中,字符串存储为字符数组,以'\0'结束。在C的接口中,有strstr函数,可以在字符串中查找另一个字符串。功能为:在str1中查找str2,如果存在,那么返回查找到的起始指针,否则返回NULL。C++的string类提供了字符串中查找另一个字符串的函数find。

u013250861的博客 1417

软考备考:《系统规划与管理师教程》(第2版)第2章——数字ZG与数智化发展

🔴数字化转型的定义:数字化转型是建立在数字化转换、数字化升级基础上,进一步触及组织核心业务,以新建一种业务模式为目标的高层次转型。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 960

ROCm rocr-libhsakmt分析系列1-2:多GPU跨卡VRAM访问机制分析

本文基于ROCr-Runtime的libhsakmt库源码,深入分析了多GPU系统中跨设备内存访问的实现机制。主要内容包括: 实现流程概述:通过P2P拓扑发现、统一虚拟地址空间、页表映射和硬件转发四个步骤,实现零拷贝的跨GPU内存访问。

图形/计算GPU的驱动与虚拟化技术分享园地 2500

string详解(从使用到底层)

文档里有不同类型的string,本质上是为了去适配不同的编码表,我们要学习的就是最常见的string,适配可变长编码表,可以将它理解为字符数组的顺序表。

2501_94636284的博客 1420

【大语言模型 85】IA3与其他PEFT方法对比

在大语言模型时代,参数高效微调(PEFT)技术成为了降低微调成本的关键。本文深入解析IA3(Infused Adapter by Inhibiting and Amplifying Inner Activations)方法,并与LoRA、AdaLoRA、Prefix Tuning等主流PEFT技术进行全面对比,通过理论分析、代码实现和实验验证,帮助读者理解不同PEFT方法的优劣势和适用场景,为实际项目中的技术选型提供科学依据。

熵数实验室 752

string类【万字详解,包括认识,介绍,使用,模拟实现】

find + npos(重点): 从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置。empty (重点): 检测字符串释放为空串,是返回true,否则返回false。rfind :从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置。resize (重点) :将有效字符的个数该成n个,多出的空间用字符c填充。operator+= (重点): 在字符串后追加字符串str。size(重点): 返回字符串有效字符长度。c_str(重点) :返回C格式字符串。

qq_54626677的博客 332

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C语言头文件<string.h>下的常用函数,<algorithm>和<string>头文件下find的区别

6.strchr():在字符串中查找某个字符的首次出现的位置。7.strstr():在字符串中查找子字符串首次出现的位置。是一个无符号的整数类型,常用于表示内存大小和数组索引)1.strlen():计算字符串的长度。5.strcmp():字符串的比较。2.strcpy():字符串复制。3.strcat():字符串拼接。4.strlen():字符串长度。0:第一个字符串大于第二个。=0:两个字符串相等。

2301_79290155的博客 348

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【C++初阶】string类常用接口与模拟实现

C++中的string类提供了比C语言更安全、更方便的字符串操作方式。文章介绍了string的基本构造方法、常用容量操作(size/length/capacity/empty/clear/reserve/resize)以及访问遍历方式([]操作符/迭代器/范围for)。重点对比了C++ string与C字符串的区别,展示了string类的自动内存管理特性,如reserve预分配空间避免频繁扩容,resize调整字符串长度等。通过示例代码演示了string类的各种用法,体现了其面向对象的特性,比C字符串更安全

Z2382430464的博客 1395

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【C++】string

STL 库 string 详解

weixin_61091020的博客 1万+

从零学STL:string类常用接口一篇吃透

本文介绍了C++标准模板库(STL)的基本概念和string类的使用方法。STL包含容器(如vector、string)、迭代器和算法三部分,极大简化了C++开发。重点讲解了string类的常见操作:构造、容量管理(size/resize/reserve)、访问遍历(operator[]/迭代器/范围for)、修改(append/+=)和查找(find/rfind)等功能。同时对比了C风格字符串与string类的区别,并详细说明了auto关键字和范围for循环在STL遍历中的应用。文章还提供了string类

2501_94404690的博客 344

C++ string 实用方法讲解,模拟代码实现

上面的代码我们看到 string中有三个成员变量_str,_capacity,_size,分别表示存储字符串的指针,最大存储字符的个数,当前存储有效字符的个数。待转换字符的进制(此参数仅仅存在与stoi,stol):0(自动推导),2,16,10,8。存储返回第一个不是数字的字符位置的size_t类型的指针,(不使用可填写NULL)to_string函数是将字符转化为字符串 参数表:数字(默认十进制,小数,整数都可以)参数解释:指定删除的位置,从这个位置删除之后字符的个数(包括指定位置这个字符)

2501_94762791的博客 456

C++ string类模拟实现:从动态内存管理到STL容器设计

在C++编程中,动态内存管理是核心基础概念之一,它直接关系到程序的性能和稳定性。其原理在于程序运行时从堆内存中按需分配和释放空间,而RAII(资源获取即初始化)原则则是现代C++管理资源的核心理念,通过对象的生命周期自动控制资源,有效防止内存泄漏。这一技术的价值在于能够构建高效、安全的底层数据结构,为上层应用提供灵活的数据存储能力。在标准模板库(STL)中,容器类的设计正是这些思想的集大成者,它们封装了复杂的资源管理逻辑,提供统一易用的接口。其中,string类作为最常用的序列容器,其内部实现涉及深拷贝、迭

weixin_30587927的博客 312

C++ String

C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列 的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户 自己管理,稍不留神可能还会越界访问。在OJ中,有关字符串的题目基本以string类的形式出现,而且在常规工作中,为了简单、方便、 快捷,基本都使用string类,很少有人去使用C库中的字符串操作函数。

Zengwengang的博客 410

8.string类-下:string类的模拟实现【由浅入深-C++】

本文介绍string类的模拟实现。

插花弄玉的博客 709

C++ string查找、子串提取与交换操作详解

在C++编程中,字符串处理是基础且高频的操作,其核心在于对字符序列的定位、提取与重组。理解字符串的底层原理,如内存管理与迭代器机制,是编写高效、安全代码的关键。从技术价值看,掌握字符串操作不仅能提升文本处理效率,更是理解STL容器设计哲学和零开销抽象理念的入口。在实际应用场景中,无论是日志解析、数据清洗还是配置文件读取,都离不开精准的查找与安全的子串提取。本文聚焦于C++ std::string的find、substr与swap等核心操作,通过解析npos的含义、substr的越界处理以及swap的O(1)

weixin_30587927的博客 315

c++string

idx 是一个输出型参数,通过这个参数会带回一个值,idx是一个指针,需要在外边创建一个size_t类型的值,传递他的地址给idx,这个参数会带回str中无法正确匹配数字的第一个字符的位置。同一个容器的两个迭代器也可以相减,相减结果的绝对值是两个迭代器中间的元素个数。string类型的字符串是支持+和+=运算的,就是在字符串的后面加上字符串,string中重载了operator这个操作符。string中,字符串的比较是基于字典序进行的,比较是对应位置上字符的ascll值的大小,比较的不是字符串的长度。

2503_94205631的博客 1212

C++ String类模拟实现:从深拷贝到移动语义的完整指南

在C++编程中,字符串处理是基础且高频的操作,理解其底层实现原理对提升编程能力至关重要。字符串类的核心在于动态内存管理,这涉及到构造函数、析构函数、拷贝控制等关键概念。通过手动管理内存,开发者能深入理解深拷贝与浅拷贝的区别,避免内存泄漏和程序崩溃。在工程实践中,高效的字符串操作需要考虑扩容策略、异常安全以及接口设计。现代C++引入的移动语义进一步优化了性能,允许资源的高效转移。本文以模拟实现一个完整的String类为主线,系统讲解深拷贝、拷贝赋值运算符的现代写法、以及移动构造函数等核心机制,帮助读者从原理到

weixin_34306593的博客 395

STL之string深度刨析

本文摘要了C++标准模板库(STL)中string类的重要知识点,主要包括六大组件库概述、auto和范围for循环特性,以及string类的核心操作。重点介绍了string的构造方式、迭代器使用、容量管理(size/capacity/resize/reserve)、元素访问([]/at)和常用修改操作(+=/append/insert/erase)。还讲解了字符串查找(find/rfind)、子串获取(substr)等实用功能,最后提到string类的模拟实现方法。这些内容涵盖了string类在C++编程中

2601_95035594的博客 195
上一篇: 27. 移除元素
下一篇: 面试题 02.03. 删除中间节点
enjoy_code_
博客等级 码龄7年 1251粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值