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

news/2024/10/3 16:51:25 标签: c语言, 开发语言

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.niftyadmin.cn/n/5688709.html

相关文章

PHP泛目录生成源码,可生成长尾关键词页面,带使用方法视频教程

介绍&#xff1a; 真正的好东西&#xff0c;搞网站优化seo从业必备。可以快速提升网站权重&#xff0c;带来的流量哗哗的 PHP泛目录生成源码 可生成新闻页面和关键词页面 带使用方法视频教程 泛目录可以用来提升网站收录和排名 合理运用目录可以达到快速出词和出权重的效果…

Pikachu-Cross-Site Scripting-DOM型xss

DOM型xss DOM型XSS漏洞是一种特殊类型的XSS,是基于文档对象模型 Document Object Model (DOM)的一种漏洞。是一个与平台、编程语言无关的接口&#xff0c;它允许程序或脚本动态地访问和更新文档内容、结构和样式&#xff0c;处理后的结果能够成为显示页面的一部分。 dom就是一…

【数据分析】DataFrame.query()

1. Pandas中的 .query() 方法 在编程中&#xff0c;.query() 方法通常与数据处理库相关&#xff0c;特别是在使用Pandas处理数据时。Pandas是一个强大的Python数据分析库&#xff0c;它提供了快速、灵活和表达能力强的数据结构&#xff0c;旨在使数据清洗和分析工作变得更加简…

面试速通宝典——7

150. 数据库连接池的作用 数据库连接池的作用包括以下几个方面&#xff1a; 资源重用&#xff1a;连接池允许多个客户端共享有限的数据库连接&#xff0c;减少频繁创建和销毁连接的开销&#xff0c;从而提高资源的利用率。 统一的连接管理&#xff1a;连接池集中管理数据库连…

动态规划

139. 单词拆分 这题感觉好晕 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {//dp[i] 字符串长度为i&#xff0c;dp[i]为true表示可以拆分成字典中的一个或两个字符串//if(dp[j]是true,并且从j到i这个子串出现在字典中) dp[i]true;…

postgresql-重复执行相同语句,试试 prepare!

文章目录 每次你向 PostgreSQL 发送 SQL 语句时&#xff0c;数据库都必须对其进行解析(parse)。解析虽然很快&#xff0c;但如果同样的语句被解析一千次&#xff0c;这种操作累积起来可能会占用大量时间&#xff0c;而这些时间本可以用于处理其他事务。为避免这种情况&#xff…

MySQL 实验 3:创建数据表

MySQL 实验 3&#xff1a;创建数据表 目录 MySQL 实验 3&#xff1a;创建数据表一、创建数据表的语法二、常用的数据类型1、数值型2、日期时间型3、文本类型 三、查看数据库中的表四、查看表结构 关系数据库中的所有数据都保存在数据表&#xff08;table&#xff09;中。表是数…

删除GitHub仓库的fork依赖 (Delete fork dependency of a GitHub repository)

解除fork仓库依赖的原因 在 Fork 了一个仓库&#xff0c;进行了大量修改&#xff0c;导致与父仓库的功能差异很大。 在每次 Pull Request 的默认目标分支是父仓库&#xff0c;很容易就会 PR 到父仓库里。 Fork 的仓库被其他人提出贡献并使用了&#xff0c;但不能显示贡献者…