目录
🍃任务描述🍃
🍃相关知识🍃
🍃编程要求🍃
🍃评测说明🍃
🍃AC_Code🍃
本关任务是实现函数int FindSubStr(char* t, char* p)。
在一个长字符串中寻找一个短字符串出现的位置,这是字符串匹配问题。
例如:长字符串是 “string” ,短字符串是 “ring” ,那么短字符串在长字符串中出现的位置是 2 ,即 “ring” 在 “string” 中出现的开始位置是 2 。
本关的编程任务是补全 step1/mystr.cpp 文件中的FindSubStr函数,以实现朴素的字符串匹配。
本关涉及的代码文件 mystr.cpp 的代码框架如下:
int FindSubStr(char* t, char* p)/*从字符串t查找子字符串p。字符串以数值结尾,例如p="str",那么p[0]='s',p[1]='t',p[2]='r',p[3]=0。采用朴素的匹配算法,返回子字符串第一次出现的位置,例如t="string ring",p="ring",则返回2。若没有找到,则返回-1。*/{// 请在此添加代码,补全函数FindSubStr/********** Begin *********//********** End **********/}本关的测试文件是 step1/Main.cpp ,测试过程如下:
以下是平台对 step1/Main.cpp 的样例测试集:
样例输入: string tri 样例输出: Location: 1
开始你的任务吧,祝你成功!
#include
#include
#include "mystr.h"
#pragma warning(disable:4996)
int FindSubStr(char* t, char* p)
/*
从字符串t查找子字符串p。
字符串以数值结尾,例如p="str",那么p[0]='s',p[1]='t',p[2]='r',p[3]=0。
采用朴素的匹配算法。
返回子字符串第一次出现的位置,例如t="string ring",p="ring",则返回2。
若没有找到,则返回-1。
*/
{// 请在此添加代码,补全函数FindSubStr/********** Begin *********/int i=0,j=0;while(p[i]!=0&&t[j]!=0) {if (p[i]==t[j]) {i++;j++;}else{j=j-i+1;i=0;}}if (p[i]==0){return j-i;}else {return -1;}/********** End **********/
}int main1()
{char t[100]; char p[100]; scanf("%s", t);scanf("%s", p);int i=FindSubStr(t, p);printf("Location: ");if(i==-1) {printf("not found!");}else {printf("%d",i); }return 0;
}
上一篇:卢顿1-1埃弗顿,卡尔弗特-勒温先拔头筹,伊莱贾-阿德巴约救主 卢顿伯恩利爆冷伯恩茅斯绝杀 卢顿本赛季进球
下一篇:外媒:拜登向杨紫琼等人授予“总统自由勋章”,还把杨紫琼名字说错了 外国网友对杨紫琼获奖评价 杨紫琼获得奥斯卡致谢中国