习题11-6 查找子串
程序员文章站
2022-06-07 14:29:35
...
前言
记录一下这道题,我没有用strlen但是有报错,不知道为什么。
正文
题目
本题要求实现一个字符串查找的简单函数。
函数接口定义:char *search( char *s, char *t );
输入样例1:
The C Programming Language
ram
输出样例1:
10
输入样例2:
The C Programming Language
bored
输出样例2:
-1
代码一(正确)
char *search(char *s, char *t)
{
int tlen = strlen(t);
int cnt;
char *p, *q;
q = t;
while (*s != '\0')
{
p = s;
cnt = 0;
while (*s == *t)
{
s++;
t++;
cnt++;
}
if (cnt >= tlen)//当cnt大于tlen循环表示全部遍历
{
return p;
}
t = q;//还原t
s++;
}
return NULL;
}
源:https://www.jianshu.com/p/ab6e5371d10f
代码二(有错)
/* 你的代码将被嵌在这里 */
char *search(char *s, char *t){
char *pos;
while(*s){
if(*t==*s){
pos=s;
t++;s++;
if(*t==0)//只有一个字符串的情况
return pos;
else if (*t!=*s)//当匹配一个字母后面的不匹配时
{
pos=NULL;
t--;
s--;
}
else//当匹配一个字母后面的一个也匹配时
{
while(*t==*s&&*s!=0){//*s!=0,确保走完s长度就结束
t++;
s++;
}
if(*t==0){
return pos;//当t指针指到0,即全部匹配了,返回pos
}
else
pos=NULL;//否则返回NULL
}
}
s++;
}
return pos;
}