找到字符串中第一个匹配项的下标(c语言)

news2024/12/23 10:59:53

1./给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回  -1 。
//示例 1:
//输入:haystack = "sadbutsad", needle = "sad"
//输出:0
//解释:"sad" 在下标 0 和 6 处匹配。
//第一个匹配项的下标是 0 ,所以返回 0 。
//示例 2:
//输入:haystack = "leetcode", needle = "leeto"
//输出: - 1
//解释:"leeto" 没有在 "leetcode" 中出现,所以返回 - 1

2.方法一:第一步我们先设置数组haystack,needle的值,然后将haystack,与needle的长度(int n = strlen(haystack), m = strlen(needle)),然后进行判断如果haystack[i]==needle[0],如果相等flage=1,然后haystack[i+v]!=needle[v](v<m),flage=0;,反之i++.

//方法一
int strStr(char* haystack, char* needle)
{
	int n = strlen(haystack), m = strlen(needle);
	int j = 0;
	int flage= 0;
	for (int i = 0; i < n; i++)
	{
		if (haystack[i] == needle[j])
		{
			flage = 1;
			for (int v = 0; v < m; v++)
			{
				if (haystack[i + v] != needle[v])
				{
					flage = 0;
					break;
				}
			}
		}
		if (flage)
		{
			return i;
		}
	}
	return -1;
}
int main()
{
	char haystack[20] = { "sadbutsad" };
	char needle[10] = { "sad" };
	int n= strStr(haystack, needle);
	printf("%d ", n);
}

3.方法二:设置i=0,j=0;,判断haystack[i]==needle[j],如果相等,则i++,j++,如果不相等,i=i-j+1,j=0.对i++,对needle进行重新判断。对判断needle[j]=='\0'.如果相等,则返回i-j,如果不相等,则返回-1.

//方法二
int strStr(char* haystack, char* needle) {
	int i = 0, j = 0;
	while (haystack[i] != '\0' && needle[j] != '\0') {
		if (haystack[i] == needle[j]) {
			i++;
			j++;
		}
		else {
			i = i - j + 1;
			j = 0;
		}
	}
	if (needle[j] == '\0') return i - j;
	return -1;
}
int main()
{
	char haystack[20] = { "sadbutsad" };
	char needle[10] = { "sad" };
	int n= strStr(haystack, needle);
	printf("%d ", n);
}

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

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

相关文章

plt用数组显示图像

目录 plt.imshow实战 plt.imshow plt.imshow 可以用来显示二维数组表示的图像&#xff0c;也可以用来显示热图&#xff08;heatmap&#xff09;等。基本语法如下&#xff1a; plt.imshow(X, cmapviridis, interpolationnearest)参数说明&#xff1a; X&#xff1a;二维数组&…

基础岛第5关:XTuner微调个人小助手认知

进入开发机 克隆Tutorial仓库 mkdir -p /root/InternLM/Tutorialgit clone -b camp3 https://github.com/InternLM/Tutorial /root/InternLM/Tutorial 创建虚拟环境 在安装 XTuner 之前&#xff0c;我们需要先创建一个虚拟环境。使用 Anaconda 创建一个名为 xtuner0121 的虚拟…

工作日志:nvm版本控制遇到的一系列问题。

1、安装vue3可使用的富文本编辑器。&#xff08;https://www.wangeditor.com/v5/for-frame.html#demo-1&#xff09; npm install wangeditor/editor-for-vuenext --save2、为同时拥有两个类的元素设置样式&#xff0c;组合选择器是通过在选择器中并列写入两个类名来实现的&am…

openpnp - 执行M400命令后,超时错误的解决方法

文章目录 openpnp - 执行M400命令后&#xff0c;超时错误的解决方法概述笔记备注END openpnp - 执行M400命令后&#xff0c;超时错误的解决方法 概述 在X轴齿隙校正时&#xff0c;出现M400的命令超时错误。能重现。 查了资料&#xff0c;有人遇到过。看了github上的一个帖子(…

STM32(四)LED闪烁、流水灯及蜂鸣器操作

小节任务&#xff1a;在对GPIO函数初始化操作及配置好输入或输出模式后&#xff0c;使用GPIO的输入输出函数控制LED闪烁、流水灯及蜂鸣器操作&#xff0c;本小节先使用GPIO的四个输出函数 SetBits函数将指定端口设置为高电平 ResetBits函数将指定端口设置为低电平 WriteBit根据…

Tiny-universe手戳大模型TinyRAG--task4

TinyRAG 这个模型是基于RAG的一个简化版本&#xff0c;我们称之为Tiny-RAG。Tiny-RAG是一个基于RAG的简化版本&#xff0c;它只包含了RAG的核心功能&#xff0c;即Retrieval和Generation。Tiny-RAG的目的是为了帮助大家更好的理解RAG模型的原理和实现。 1. RAG 介绍 LLM会产…

Linux中的进程间通信之共享内存

共享内存 共享内存示意图 共享内存数据结构 struct shmid_ds {struct ipc_perm shm_perm; /* operation perms */int shm_segsz; /* size of segment (bytes) */__kernel_time_t shm_atime; /* last attach time */__kernel_time_t shm_dtime; /* last detach time */__kerne…

OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离

OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离 —— 2024-10-02 下午 code review! 文章目录 OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离1.代码图片2.分析3.UML4.代码 1.代码图片 运行 Mouse button 1 pressed at (100, 200) Mouse dragged by (50, 50)…

老年人最真实的养老需求

子孝父心宽。&#xff08;陈元靓&#xff09; 向往的养老胜地 下文节选(有删改&#xff09;&#xff1a; 中消协发布报告 揭示老年人最真实的养老服务需求 主页&#xff1a; 博客 文章目录 前言1. 需求端1.1 居家养老更关注家政餐饮等“日常所需”1.2 机构养老的需求重在“医…

猫咪尿闭的症状有哪些?适合尿闭猫咪的猫罐头盘点

刚开始养猫的时候只喂猫粮&#xff0c;也没督促孩子喝水&#xff0c;也没喂猫罐头&#xff0c;结果猫咪尿闭了&#xff0c;每次上厕所都在惨叫&#xff0c;完全无法排尿。带去医院治疗&#xff0c;前前后后总共花了8000&#xff0c;真实花钱买教训。我总结了一下猫咪尿闭时会出…

kettle从入门到精通 第八十九课 ETL之kettle kettle jms activemq使用教程

场景&#xff1a;群里有小伙伴求助jms activemq如何使用kettle 进行消费数据&#xff0c;之前连接过kafka&#xff0c;rabbtimq&#xff0c;想着activemq应该也没啥难度&#xff0c;结果低估了activemq。盘他&#xff01;&#xff01;&#xff01; 插曲&#xff1a;ActiveMq 有…

SQL连接Python

对于运营部门的Yoyo来说&#xff0c;她想要知道夜曲优选的订单都来自哪些省份&#xff0c;每个省份的总订单数以及总订单金额分别是多少。 这时小鹿就会通过SQL对连接的数据库进行查询&#xff0c;再将结果传递给Python处理&#xff0c;并帮助Yoyo生成可视化图表。 我们先来快…

工程师 - Github文件访问加速

如果是下载单独的又比较大的Github上的文件&#xff0c;网速较差时&#xff0c;可以使用镜像网站&#xff0c;比如下面这个工具。 GitHub 文件加速 - Sonder (akams.cn) GitHub 文件加速 - Sonder 另外&#xff0c;也可以在搜索引擎里直接搜索“Github 文件加速”&#xff0c;…

MySQL高阶2041-面试中被录取的候选人

目录 题目 准备数据 分析数据 总结 题目 编写解决方案&#xff0c;找出 至少有两年 工作经验、且面试分数之和 严格大于 15 的候选人的 ID 。 可以以 任何顺序 返回结果表。 准备数据 Create table If Not Exists Candidates (candidate_id int, name varchar(30), yea…

检索增强生成(RAG)有什么好的优化方案?

RAG&#xff08;检索增强生成&#xff09;是一种结合了信息检索和内容生成的技术&#xff0c;常用于提升人工智能回答问题的准确性和相关性。本文将RAG的优化分为两个主要方向进行介绍&#xff1a;基础功能优化和架构优化。 一、RAG基础功能优化 基础功能优化主要是对RAG的每个…

以太网交换安全:端口安全

一、端口安全介绍 端口安全是一种网络设备防护措施&#xff0c;通过将接口学习到的动态MAC地址转换为安全MAC地址&#xff08;包括安全动态MAC和Sticky MAC&#xff09;&#xff0c;阻止除安全MAC和静态MAC之外的主机通过本接口和设备通信&#xff0c;从而增强设备的安全性。以…

计组复习笔记

计组笔记 汇编部分 通用寄存器&#xff08;General Registers&#xff09;: AX (Accumulator): 用于累加运算&#xff0c;也是乘法和除法的默认寄存器。BX (Base Register): 可以用作一个基址寄存器&#xff0c;通常用于存放数据的基地址。CX (Counter Register): 通常用于循环…

Lab3 【哈工大_操作系统】系统调用

本节将更新哈工大《操作系统》课程第三个 Lab 实验 系统调用。按照实验书要求&#xff0c;介绍了非常详细的实验操作流程&#xff0c;并提供了超级无敌详细的代码注释。文末附完整标准答案代码&#xff0c;包括系统调用实现 who.c 和测试函数 iam.c、whoami.c 以及超详细注释。…

mac M2安装单机版 MongoDB 7.x

1. 通过tgz包安装MongoDB 1.1 下载并解压缩安装包 官网下载 mac OS 的 MongoDB 安装包&#xff0c;这里选择7.x版本进行安装&#xff08;下载链接&#xff09; 下载好的tgz包&#xff0c;双击解压缩&#xff0c;并重命名为mongdb 将安装包拷贝到安装目录&#xff0c;笔者的…

深入解析开源大模型的GPU资源需求与优化策略

随着大模型的火热很多项目中都使用到了开源大模型&#xff0c;这时候准确评估大模型的GPU资源非常重要&#xff0c;主要有下面几个方面 成本效率&#xff1a;GPU是昂贵的资源。高估内存需求可能导致在硬件上的不必要支出&#xff0c;而低估则可能导致系统故障或性能下降。 性…