首页 > 其他分享 >找到字符串中第一个匹配项的下标(c语言)

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

时间:2024-10-04 20:20:21浏览次数:10  
标签:flage 匹配 int needle char ++ 字符串 下标 haystack

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);
}

标签:flage,匹配,int,needle,char,++,字符串,下标,haystack
From: https://blog.csdn.net/scy2429828663/article/details/142684376

相关文章

  • c# - - - json字符串获取值,json字符串转实体类
    json字符串获取值usingNewtonsoft.Json.Linq;usingSystem;namespaceConsoleApp1{classProgram{staticvoidMain(string[]args){Console.WriteLine("HelloWorld!");stringmStr="{\"shen......
  • python基础(二)之字符串
    字符串的定义Python中的字符串可以使用单引号、双引号和三引号(三个单引号或三个双引号)括起来字符串的引号嵌套单引号定义法,可以内含双引号双引号定义法,可以内含单引号可以使用 \转义特殊字符来解除引号效用,变成普通字符串字符串的拼接和重复使用“+”号连接字符串变量......
  • 算法训练营第七天| 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
    344.反转字符串状态:成功完成。初始思路:双指针交换位置就可以,如果元素个数为偶数,则刚好交换完最后一组后,left>right;如果元素个数为奇数,交换完最后一组后,left和right同时到达中位数,不需要交换。 541.反转字符串II 状态:没做出来。初始思路:这道题是以上一个题目为基础的,我......
  • 全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字
    全网最适合入门的面向对象编程教程:55Python字符串与序列化-字节序列类型和可变字节字符串摘要:在Python中,字符编码是将字符映射为字节的过程,而字节序列(bytes)则是存储这些字节的实际数据结构,字节序列和可变字节字符串的主要区别在于其可变性和用途,bytearray是可变的字节序列......
  • 54_初识搜索引擎_解密如何将一个field索引两次来解决字符串排序问题
    如果对一个stringfield进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了通常解决方案是,将一个stringfield建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序PUT/website{"mappings":{"article":{"properties":{"title":{"type":"t......
  • c++ vector容器、字符串
    c++vector容器          字符串:           ......
  • 解决 PBootCMS 中缩略图尺寸不匹配的问题
    假设你需要调整缩略图的最大宽度为 2000 像素,不限制高度,可以在 config.php 文件中进行如下修改:php //缩略图配置'ico'=>array('max_width'=>'2000',//最大宽度'max_height'=>''//不限制高度),进一步排查如果调整尺寸后问题仍然存在,可以进一步排查:......
  • Excel:vba编程中出现下标越界错误
    出现错误的原因有以下可能:(新手小白学习ing,记录学习,可能还有别的错误原因)1.表名出错,所以找不到目标表,更找不到具体范围(大小写也一定要一样)2.范围出错,比如下面的D2:D6,要确定是否存在这一列(注意vba里面的符号都是英文的)在Excel中,工作簿是一个小册子,工作表是小册子中的某一......
  • python 包含有引号和花括号的字符串的格式化
    replace不起作用;update_per_seconds="30"uploadtime_per_seconds="30"imei_string="1234"###采用{0}format不行###下面replace不行msg="""{"rmtcmd":"set","dev":{"poll":{&......
  • 数据库保存异常,参数异常不匹配
    有一个项目,用的是sqllite的数据库。因为版本迭代,数据库字段也在不断地增加当中。最近发生了一个奇怪的异常,保存数据的时候报参数不匹配的错误。后来查找数据库发现了两个问题:问题1:某字段没有新增成功问题2:但是查询的时候,显示该字段是存在的一."altertableaverage_dataadd......