华为编程大赛 实现子串查找程序 c++语言个人代码

合集下载

strrstr函数实现

strrstr函数实现

strrstr函数实现什么是strrstr函数?它的用途是什么?如何实现?strrstr函数是C语言中的一个字符串处理函数,用于在一个字符串中查找指定子串的最后一次出现位置。

该函数实现了字符串的反向查找功能,因此被称为“从右往左查找字符串函数”。

strrstr函数最常用的用途之一是在字符串中查找特定的子串,以便在需要更新该子串的情况下能够快速定位。

另一个常见的用途是在字符串中查找特定的字符或字符串列表,并将其替换为其他字符或字符串。

现在来看一下如何实现strrstr函数。

一、分析需求首先需要了解strrstr函数的具体实现需求,即该函数需要接收哪些参数、返回什么值,以及如何处理输入和输出等问题。

strrstr函数的基本形式如下:char* strrstr(const char* str1, const char* str2);其中,str1表示待查找的字符串,str2表示要查找的子串。

函数的返回值是指向str1中最后一次出现str2的指针。

如果str1中不存在str2,则返回NULL。

根据这个基本形式,可以得出strrstr函数需要完成以下几个任务:1. 接收两个输入参数:待查找字符串和要查找的子串。

2. 在输入的字符串中从右往左查找子串的最后一次出现位置。

3. 返回指向子串最后一次出现位置的指针,如果子串不存在则返回NULL。

二、主要思路在C语言中,字符串是以字符数组的形式存储的。

由于字符串本身具有长度信息,因此无需单独指定字符串的长度,直接用字符串本身的长度来处理即可。

根据上面的需求分析,可以提出以下主要思路:1. 获取待查找字符串str1和要查找的子串str2的长度。

2. 从待查找字符串str1的最后一个字符开始,逐个向前遍历字符,直到找到子串str2的第一个字符。

3. 从子串的第一个字符开始,逐个比较子串和待查找字符串中的字符,如果有不同则跳出循环。

4. 如果比较结果都为相等,则找到了子串在待查找字符串中的最后一次出现位置,返回子串的指针。

c中contains的用法

c中contains的用法

c中contains的用法在C语言中,contains函数是一种用于判断一个字符串中是否包含另一个字符串的函数。

在很多情况下,我们需要对字符串进行查找、替换、删除、插入等操作,而contains函数可以帮助我们判断字符串是否包含某个特定的子字符串,从而方便我们进行相关操作。

下面分步骤阐述如何使用contains函数:1. 包含头文件string.h在使用contains函数之前,我们需要包含头文件string.h。

该头文件中包含了对字符串的操作函数,其中就包括contains函数。

使用如下代码进行头文件包含:#include <string.h>2. 准备两个字符串在使用contains函数之前,我们需要定义两个字符串,一个是原始字符串,另一个是要检查的子字符串。

这两个字符串可以通过声明字符数组或使用字符串指针的方式来定义。

例如:char str[] = "Hello World!";char substr[] = "World";或者char* str = "Hello World!";char* substr = "World";3. 调用contains函数一旦定义了原始字符串和要检查的子字符串,我们就可以调用contains函数来判断原始字符串是否包含子字符串了。

contains函数的原型如下:char *strstr(const char *str1, const char *str2);其中,第一个参数str1是要查找的字符串,第二个参数str2是要查找的子字符串。

如果函数返回值为NULL,则表示原始字符串不包含子字符串;反之,则表示原始字符串包含子字符串。

例如:char* ret = strstr(str, substr);if (ret != NULL) {printf("'%s' contains '%s'\n", str, substr);} else {printf("'%s' does not contain '%s'\n", str, substr);}上述代码中,我们通过调用contains函数得到了返回值ret,如果返回值不为空,则说明原始字符串包含子字符串,反之则说明不包含。

初学C语言常用简单程序代码

初学C语言常用简单程序代码

初学C语言常用简单程序代码C语言是一种广泛应用于软件开发和系统编程的高级编程语言。

对于初学者来说,掌握一些常用的简单程序代码是非常重要的,因为它们可以帮助你建立起对C 语言基础知识的理解,并为以后的学习打下坚实的基础。

在本文中,我将为你提供一些常见的C语言简单程序代码示例,帮助你更好地入门。

1. Hello World```c#include <stdio.h>int main() {printf("Hello, World!");return 0;}```这是C语言中最简单的程序,它会在屏幕上输出"Hello, World!"。

通过这个简单的示例,你可以学会如何使用printf函数来输出文本。

2. 计算两个数的和```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个数的和是:%d", sum);return 0;}```这个程序示例演示了如何从用户输入中读取两个整数,并计算它们的和。

通过使用scanf函数,我们可以读取用户输入的值,并使用printf函数将结果输出到屏幕上。

3. 判断一个数是奇数还是偶数```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if(num % 2 == 0) {printf("%d是偶数", num);} else {printf("%d是奇数", num);}}```这个程序示例展示了如何判断一个数是奇数还是偶数。

程序员华为机考面试题目(3篇)

程序员华为机考面试题目(3篇)

第1篇一、编程基础题1. 题目描述:编写一个函数,输入一个整数,返回其阶乘值。

输入示例:5输出示例:1202. 题目描述:编写一个函数,实现两个字符串的合并。

输入示例:str1 = "Hello", str2 = "World"输出示例:"HelloWorld"3. 题目描述:编写一个函数,实现两个整数的加法。

输入示例:a = 3, b = 4输出示例:74. 题目描述:编写一个函数,实现整数数组中的最大值。

输入示例:[1, 3, 2, 5, 4]输出示例:55. 题目描述:编写一个函数,实现整数数组中的最小值。

输入示例:[1, 3, 2, 5, 4]输出示例:1二、数据结构与算法题1. 题目描述:实现一个单链表的创建、插入、删除和遍历操作。

2. 题目描述:实现一个二叉树的创建、插入、删除和遍历操作。

3. 题目描述:实现一个排序算法,如快速排序、归并排序或冒泡排序。

4. 题目描述:实现一个二分查找算法,在有序数组中查找特定元素。

5. 题目描述:实现一个递归函数,计算斐波那契数列的第n项。

三、编程题1. 题目描述:实现一个函数,计算两个整数的最小公倍数。

输入示例:a = 4, b = 6输出示例:122. 题目描述:实现一个函数,计算两个整数的最大公约数。

输入示例:a = 24, b = 36输出示例:123. 题目描述:实现一个函数,计算一个整数数组中的平均值。

输入示例:[1, 2, 3, 4, 5]输出示例:34. 题目描述:实现一个函数,将一个字符串中的字母转换为大写。

输入示例:"Hello World"输出示例:"HELLO WORLD"5. 题目描述:实现一个函数,将一个字符串中的空格替换为下划线。

输入示例:"Hello World"输出示例:"Hello_World"四、算法题1. 题目描述:实现一个函数,计算一个整数数组中的最大连续子数组和。

c语言index函数的使用方法

c语言index函数的使用方法

C语言中的index函数是用来查找指定子字符串在另一字符串中第一次出现的位置,它的函数原型为:
int index(char *src,char *sub);
其中src为源字符串,sub为要查找的子字符串,函数的返回值为子字符串在源字符串中的位置,如果没有找到,则返回-1。

首先,要在C语言源代码中包含头文件string.h,然后在程序中调用index函数:
char *src="this is a string";
char *sub="is";
int pos=index(src,sub);
以上代码表示查找字符串sub在字符串src中第一次出现的位置,如果查找成功,此时pos的值为2,表示子字符串sub在源字符串src中第一次出现的位置是从src的第二个字符开始的。

index函数在C语言编程中可以用来查找子字符串在源字符串中的位置,是一种非常有用的函数,它的使用非常简单,只需要传入源字符串和子字符串,就可以获得子字符串在源字符串中第一次出现的位置,在字符串处理中有着重要的作用。

串的基本操作和简程序实验心得

串的基本操作和简程序实验心得

串的基本操作包括:1. 创建串:使用字符串常量或字符数组来创建一个串。

2. 初始化串:将串中的所有元素设置为一个特定的值。

3. 拷贝串:将一个串的内容复制到另一个串中。

4. 连接串:将两个或多个串连接在一起,形成一个新的串。

5. 求串长度:返回串中元素的个数。

6. 判断子串:检查一个串是否包含在另一个串中。

7. 查找子串:在一个串中查找指定子串的位置。

8. 替换子串:将一个串中的某个子串替换为另一个子串。

9. 插入子串:在指定位置插入一个子串。

10. 删除子串:从指定位置开始,删除指定长度的子串。

11. 截取子串:从指定位置开始,截取指定长度的子串。

12. 逆置串:将串中的元素顺序颠倒。

13. 遍历串:访问串中的每个元素。

以下是一个简单的C语言程序,用于实现上述操作:```c#include <stdio.h>#include <string.h>#include <stdlib.h>void create_string(char *str, const char *s);void init_string(char *str, char c);void copy_string(char *dest, const char *src);void concatenate_strings(char *dest, const char *s1, const char *s2); int length_string(const char *str);int substring_exists(const char *str, const char *sub);int find_substring(const char *str, const char *sub);void replace_substring(char *str, const char *old, const char *new); void insert_substring(char *str, int pos, const char *sub);void delete_substring(char *str, int pos, int len);void substring(char *dest, const char *str, int pos, int len);void reverse_string(char *str);void traverse_string(const char *str);int main() {char str1[100], str2[100], result[200];int pos = 2;int len = 3;int found = -1;int index = -1;const char *old = "world";const char *new = "everyone";const char *sub = "hello";const char *s1 = "Hello, ";const char *s2 = "world!";create_string(str1, "Hello");create_string(str2, "world");init_string(result, '-');concatenate_strings(result, s1, s2);printf("Concatenated string: %s", result);printf("Length of string: %d", length_string(result));found = substring_exists(result, sub);printf("Substring exists: %d", found);index = find_substring(result, sub);printf("Substring index: %d", index);replace_substring(result, old, new);printf("Replaced string: %s", result);insert_substring(result, pos, sub);printf("Inserted string: %s", result);delete_substring(result, pos, len);printf("Deleted string: %s", result);substring(result, result + index + strlen(sub), pos, len);printf("Substring after deletion: %s", result);reverse_string(result);printf("Reversed string: %s", result);traverse_string(result);return 0;}```实验心得:通过这个简单的程序,我了解了串的基本操作和实现方法。

c语言findwindow函数

c语言findwindow函数C语言是一门广泛应用于各个领域的高级编程语言,具有高效、灵活、跨平台等优点。

其中,FindWindow函数是C语言中常用的函数之一,它主要用于在Windows操作系统中查找指定窗口的句柄。

首先,需要明确什么是“句柄”。

在Windows操作系统中,每个窗口都有一个唯一标识符,称为窗口句柄。

程序可以通过窗口句柄找到对应的窗口,并对其进行操作。

FindWindow函数可以接受两个参数,分别是窗口类名和窗口标题。

它的函数原型如下:```CHWND FindWindow(LPCSTR lpClassName, // 窗口类名LPCSTR lpWindowName // 窗口标题);```其中,lpClassName和lpWindowName都是指向字符串的指针。

如果需要查找指定类名和标题的窗口,就需要将它们传递给FindWindow 函数。

使用FindWindow函数的过程如下:1. 打开Visual Studio或其他C语言集成环境,创建一个新的控制台应用程序工程。

2. 在程序中引用Windows.h头文件,它包含了大量的Windows API函数和数据类型的定义。

在头文件中添加以下代码:```C#include <Windows.h>```3. 接下来,在主函数中使用FindWindow函数查找指定窗口。

例如,在查找记事本程序窗口时,可以这样编写代码:```Cint main(){HWND hwnd = FindWindow("Notepad", NULL);if(hwnd == NULL){printf("未找到窗口!\n");}else{printf("窗口句柄:%d\n", hwnd);}return 0;}```上述代码中,使用了"Notepad"作为窗口类名,NULL表示窗口标题为空。

字符串查找函数

字符串查找函数字符串查找函数是一种查找(或搜索)字符串中的指定文本的方法。

它可以从字符串的起始处或任何特定位置开始,如果找到给定字符串,那么函数将返回该字符串的位置。

字符串查找函数可以用于从文本中搜索或检测特定文本。

在许多编程语言中,这项功能是内置支持的,但如果有一种新的语言,它还没有实现这项技术,或者如果您想要从源代码实现,那么您可以尝试实现自己的字符串查找函数。

字符串查找函数的实现可以使用循环,比较,索引,分割,或其他方法,具体取决于语言本身以及实现中所使用的算法。

常见的字符串查找函数包括strstr(),indexof(),search(),etal,这些函数在各种编程语言中实现,这增加了它们的可用性。

例如,Java中的indexof()函数可以在String对象上调用,而传统的C strstr()可以在char指针或字符数组上调用。

在C语言中,strstr()函数可以非常有效地在一个字符串中搜索另一个字符串。

它只接受两个参数:第一个是指向要搜索的字符串的指针,第二个是指向要搜索的子字符串的指针。

如果找到了该字符串,它将返回指向该子字符串的指针,如果没有找到,它将返回NULL。

另一种搜索字符串的方法是使用朴素搜索算法,比如BOM (Boyer-Moore)搜索算法。

它使用一种“跳跃策略”来检测字符串的子字符串的位置,这样可以更快地查找字符串中的特定子字符串。

除了朴素搜索算法,还有一种快速搜索算法,叫做Karp-Rabin算法。

它使用一种模数哈希函数来快速搜索字符串中的子字符串,而不需要比较每个字符。

这种算法的搜索速度比朴素搜索算法更快,而且不容易出错。

字符串查找函数可以用于在文本或字符串中查找特定文本,例如,查找一个文件中是否含有特定单词,或查找一个文件中是否包含某个URL。

它也可以用于在一个复杂的数据库查询中搜索特定字符,或在文件名中搜索字符串,等等。

因此,字符串查找函数是编程语言中非常有用的一种功能,可以帮助开发人员提高编程效率。

c语言find函数

c语言find函数C语言是目前最受欢迎的程序设计语言之一,被广泛应用于众多领域,其中也包括了常用的字符串操作功能。

字符串操作程序必不可少,C语言对其提供了丰富的操作接口,其中包括Find函数,它有助于让开发者更加轻松地编写字符串操作程序。

Find函数是C语言中的一种常用的字符串操作函数,通常用来查找字符串中的某一字符或字符串。

它的定义为:char *strchr(char *str, char ch)其中str表示查找的字符串,ch表示所要查找的字符,函数返回值是查找到字符ch所在的位置,并且返回一个指向该字符的指针。

使用Find函数来查找字符串中的某一字符或字符串非常简单,只需要调用这个函数,就可以找到相应的字符位置信息。

例如,在C 语言中有一个字符串str=hello world,要查找字符串中的字符‘o’,可以采用以下语句:char *p=strchr(str,o通过它,可以得到指向字符‘o’的指针p,这意味着只需要调用一次Find函数就可以获得查找到的字符位置信息。

此外,Find函数还可以用来查找字符串中的子字符串,具体的使用方法同上面的示例一样,只需要替换字符串str和欲查找的字符ch即可。

上述内容主要讲解了C语言中常用的Find函数,它是一种简单易用的字符串操作函数,可以用来查找字符串中的某一字符或字符串,而且使用也非常简单,只需要调用函数即可。

如果想要获得字符串中某一字符或字符串的位置信息,使用Find函数定能让你轻松解决这个问题。

C语言的Find函数如今已经成为C语言的标配,它不仅仅拥有较高的可移植性,还可以让开发者更加轻松地完成字符串操作程序编写。

而且它也被应用于许多其他语言中,比如JavaScript、Python 和Ruby等,由此可见它的应用是非常广泛的。

至于如何更好地使用Find函数,需要我们对其原理和本质等有更深入的了解和掌握。

从使用层面来看,Find函数可以帮助开发者轻松快捷查找字符串中的某一字符或字符串,只要调用这个函数,就可以获得查找到的字符位置信息。

c语言string类型的find函数

c语言string类型的find函数C语言中的string类型是一种用来存储字符串的数据类型。

在C语言中,字符串是由一系列字符组成的,以空字符('\0')作为字符串的结束符。

在C语言中,我们经常需要在一个字符串中查找特定的字符或子串。

为了实现这个功能,C语言提供了一些内置的字符串处理函数,其中就包括了find函数。

find函数的作用是在一个字符串中寻找指定的字符或子串,并返回它们在字符串中第一次出现的位置。

这个函数可以帮助我们在一个字符串中快速定位我们需要的信息。

在使用find函数之前,我们需要先定义一个字符串变量并初始化它。

在C语言中,可以使用字符数组来表示字符串。

例如,我们可以定义一个名为str的字符数组来存储一个字符串。

接下来,我们可以使用find函数来查找字符串中的字符或子串。

该函数的原型如下:```cchar *find(char *str, char *substr);```其中,str是要查找的字符串,substr是要查找的字符或子串。

find函数的返回值是一个指向字符的指针,指向字符串中第一次出现指定字符或子串的位置。

如果找到了指定字符或子串,则返回该位置的指针;如果没有找到,则返回NULL。

下面是一个使用find函数的示例:```c#include <stdio.h>#include <string.h>char *find(char *str, char *substr){return strstr(str, substr);}int main(){char str[] = "Hello, world!";char *result = find(str, "world");if(result != NULL){printf("找到了指定的字符或子串:%s\n", result);}else{printf("没有找到指定的字符或子串\n");}return 0;}```在上面的示例中,我们定义了一个名为str的字符数组,并初始化它为"Hello, world!"。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实现子串查找程序
问题描述:
判断一个字符串(dst)是否是另一个字符串(src)的子串;
输出子串在母串中的第一次出现的起始位置;
匹配的时候不区分大小写;
不能使用库函数(使用库函数按0分计算);
要求实现函数:
unsigned int str_str(char * src, char *dst);
返回:如果dst是src的子串 则返回起始位置 如果不
是 则返回0
输入:src 指向母串的指针; dst 指向子串的指针
示例
src->akrsd5859 dst->rsd
则返回3
src->Rstsawerst36ds dst->rst
则返回8
src->dfsge dst-> dfsgesa
则返回0

#include
#include

unsigned int FindStr(char* src, char* dst);
void main()
{
char src[1024];
char dst[1024];

gets(src);
gets(dst);

int count = FindStr(src, dst);
printf("%d\n", count+1);
}
unsigned int FindStr(char* src, char* dst)
{
int len1 = strlen(src);
int len2 = strlen(dst);

for(int i=0; i{
if(src[i] == dst[0])
{
int n=0;
n=i+1;
for(int j=1; jif(src[n] != dst[j])
break;
if(n-i==len2)
return i;
}
}
return 0;
}

相关文档
最新文档