【C++】每日一题 28 找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。

#include <iostream>
#include <string>using namespace std;int strStr(string haystack, string needle) {int h_len = haystack.length();int n_len = needle.length();if (n_len == 0) return 0; // 空needle字符串,返回0for (int i = 0; i <= h_len - n_len; ++i) {int j;for (j = 0; j < n_len; ++j) {if (haystack[i + j] != needle[j]) break; // 检查当前位置开始的子串是否与needle匹配}if (j == n_len) return i; // 如果完全匹配,返回下标i}return -1; // 没有匹配项,返回-1
}int main() {string haystack = "hello";string needle = "ll";int result = strStr(haystack, needle);cout << "匹配项的下标为:" << result << endl;return 0;
}

时间复杂度分析:
时间复杂度是O((n-m+1)*m),其中n是haystack字符串的长度,m是needle字符串的长度。在主循环中,我们最多进行了(n-m+1)次迭代,每次迭代需要检查needle的长度m个字符与haystack中的子串是否匹配。因此,总的时间复杂度为O((n-m+1)*m)。

空间复杂度分析:
空间复杂度是O(1),因为算法中只使用了常数个额外变量,与输入字符串的长度无关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++笔记(函数重载)

目录 引入&#xff1a; 定义&#xff1a; 易错案例&#xff1a; 引入&#xff1a; 对于实现相似功能的函数&#xff0c;在命名时&#xff0c;我们常会出现命名重复的问题。对于C语言&#xff0c;编译器遇到这种命名重复的情况&#xff0c;会进行报错。而我们的C为了更方便程…

【计算机毕业设计】校园网书店系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

分布式锁-redission

5、分布式锁-redission 5.1 分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&#xff0c;可重入锁的意义在于防止死锁&#xff0c;比如HashTable这样的代码…

pycharm一直打不开

一直处在下面的页面&#xff0c;没有反应 第一种方案&#xff1a; 以管理员身份运行 cmd.exe&#xff1b;在打开的cmd窗口中&#xff0c;输入 netsh winsock reset &#xff0c;按回车键&#xff1b;重启电脑&#xff1b;重启后&#xff0c;双击pycharm图标就能打开了&#xf…

深度理解运放增益带宽积

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海。 增益带宽积是运算放大器的重要参数之一&#xff0c;指的是运放的增益和带宽的乘积&#xff0c;这个乘积…

Mybatis-Plus使用方法

MyBatis-Plus 提供了丰富的增强版的 CRUD 方法&#xff0c;使得开发者能够更简洁、高效地进行数据库操作。以下是如何使用 MyBatis-Plus 自带的增强版 CRUD 方法的基本步骤&#xff1a; 添加依赖 首先&#xff0c;确保你的 Maven 项目中已经添加了 MyBatis-Plus 的相关依赖&a…

【S32K3 MCAL配置】-3.1-CANFD配置-经典CAN切换CANFD(基于MCAL+FreeRTOS)

"><--返回「Autosar_MCAL高阶配置」专栏主页--> 目录(共5页精讲,基于评估板: NXP S32K312EVB-Q172,手把手教你S32K3从入门到精通) 实现的架构:基于MCAL层 前期准备工作:

STC89C52学习笔记(四)

STC89C52学习笔记&#xff08;四&#xff09; 综述&#xff1a;本文讲述了在STC89C51中数码管、模块化编程、LCD1602的使用。 一、数码管 1.数码管显示原理 位选&#xff1a;对74HC138芯片的输入端的配置&#xff08;P22、P23、P24&#xff09;&#xff0c;来选择实现位选&…

玩转ChatGPT:Kimi测评(图片识别)

一、写在前面 ChatGPT作为一款领先的语言模型&#xff0c;其强大的语言理解和生成能力&#xff0c;让无数用户惊叹不已。然而&#xff0c;使用的高门槛往往让国内普通用户望而却步。 最近&#xff0c;一款由月之暗面科技有限公司开发的智能助手——Kimi&#xff0c;很火爆哦。…

【Keil5-编译4个阶段】

Keil5-编译 ■ GCC编译4个阶段■ 预处理->编译->汇编->链接■ GNU工具链开发流程图■ armcc/armasm&#xff08;编译C和汇编&#xff09;■ armlink &#xff08;链接&#xff09;■ armar &#xff08;打包&#xff09;■ fromelf &#xff08;格式转换器&#xff09…

C++17中的结构化绑定详解

C进阶专栏&#xff1a;http://t.csdnimg.cn/afM80 目录 1.什么是结构化绑定 2.结构化绑定的用法 2.1.对于数组 2.2.对于结构体 2.3.对于std::pair 2.4.对于std::tuple 2.5.对于std::array 2.6.对于类 2.7.结构化绑定与范围for循环 2.8.与const和引用结合使用 3.结构…

QTextStream的使用、技巧与注意事项

在Qt框架中&#xff0c;QTextStream类是进行文本数据读写操作的重要工具。无论是处理文本文件&#xff0c;还是在内存中操作字符串&#xff0c;QTextStream以其简洁易用的API和强大的功能&#xff0c;极大地简化了文本处理任务。本文将介绍QTextStream的使用方法、一些实用技巧…

【LAMMPS学习】八、基础知识(1.7) LAMMPS 与 MDI 库代码耦合

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

【并发】面试题汇总

并发篇1. 什么是线程和进程?2. 程序计数器为什么是私有的?3. 虚拟机栈和本地方法栈为什么是私有的?4. 如何理解线程安全和不安全&#xff1f;5. 线程的类型6. 如何创建线程&#xff1f;7. 线程的生命周期和状态8. 什么是死锁&#xff0c;死锁产生的条件9. 如何预防和避免线程…

LeetCode 刷题汇总——题目序号顺序版

剑指 Offer——和为 S 的两个数字 剑指 Offer——数字在排序数组中出现的次数 剑指 Offer——和为 S 的连续正数序列 剑指 Offer——最小的 K 个数 剑指 Offer——连续子数组的最大和 剑指 Offer——数组中的逆序对 LeetCode 1——两数之和 LeetCode 2——两数相加 LeetCode 3…

Nacos日志目录下每个日志文件的简要说明

当我们在使用Nacos时&#xff0c;可能会遇到各种问题&#xff0c;需要查看Nacos的日志来进行排查。 下面是对Nacos日志目录下每个日志文件的简要说明&#xff1a; alipay-jraft.log&#xff1a;该日志文件记录Nacos使用的JRaft库的日志。 cmdb-main.log&#xff1a;该日志文件…

【现代C++】委托构造函数

现代C中的委托构造函数&#xff08;Delegating Constructors&#xff09;是C11引入的特性&#xff0c;它允许一个构造函数调用同一个类中的另一个构造函数&#xff0c;以避免代码重复。这种特性在初始化对象时提高了代码的复用性和清晰性。 1. 基本用法 在同一个类中&#xf…

(小红书平台)2024用户画像洞察报告

现今的小红书坐拥3亿月活用户&#xff0c;男女比例达到3:7&#xff0c;95后占比为50%&#xff0c;00后占比为35%&#xff0c;一二线城市用户占比50%。社区分享者超8000万&#xff0c;日均用户搜索渗透达到60%&#xff0c;UGC内容占比达90%。&#xff08;数据来源&#xff1a;小…

[lesson16]类的真正形态

类的真正形态 类的关键字 struct在C语言中以及有了自己的含义&#xff0c;必须继续兼容 在C中提供了新的关键字class用于类的定义 class和struct的用法是完全相同的 在用struct定义类时&#xff0c;所有成员的默认访问级别为public 在用class定义类时&#xff0c;所有成员…

虚拟网络设备的真正使命:实现有控制的通信

在数字化时代&#x1f4f2;&#xff0c;网络安全&#x1f512;成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁&#x1f525;&#xff0c;传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备&#x1f5a7;&#xff0c;作为网络架构中…