寻找字符字串指针法
#include <stdio.h>#define MAXS 30
char *search(char *s, char *t);
void ReadString( char s[] ); /* 裁判提供,细节不表 */
int main()
{
char s, t, *pos;
ReadString(s);
ReadString(t);
pos = search(s, t);
if ( pos != NULL )
printf("%d\n", pos - s);
else
printf("-1\n");
return 0;
}
/* 你的代码将被嵌在这里 */
char *search( char *s, char *t )
{
int index;int i = 0;
char *p;
char *q;
while(*s != '\0')
{
index = 1;
if(*s == *t)
{
p = s;
q = t;
while(*q != '\0')
{
if((*p != *q) || *p == '\0')
{
index = 0;
break;
}
p++;
q++;
}
if(index == 0)
{
continue;
}
else
return s;
}
s++;
i++;
}
return NULL;
}
帮忙看个题,寻找字串。
6个测试点有两个超时不知道咋回事.
1.长度超过题面MAXS, t在结尾处
2.只差1个字符找不到
题目是什么? 人造人 发表于 2020-3-17 15:33
题目是什么?
寻找字串
本题要求实现一个字符串查找的简单函数。
函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL 本帖最后由 Given2001 于 2020-3-17 16:03 编辑
虽然不知道题目是啥
但是我觉得可能是你的continue跳过了下面的s++
导致指针s的值一直没被改变
这就导致了除非t字符串在s的头部,就会陷入死循环
if(index == 0)
{
continue;
}
else
return s;
这一部分改成
if(index)
return s;
试试?
还有,你定义的这个 i 是干什么的,似乎赋值了没有使用过啊 Given2001 发表于 2020-3-17 15:55
虽然不知道题目是啥但是我觉得
这一部分改成
what???为什么这么一改就对了。。。。
phk7264264524 发表于 2020-3-17 15:58
what???为什么这么一改就对了。。。。
我编辑了下我的回复,你可以看看,是我的猜测 Given2001 发表于 2020-3-17 15:55
虽然不知道题目是啥但是我觉得可能是你的continue跳过了下面的s++导致s的值一直没被改变
除非t字符串在s的 ...
那个i之前调试的时候加的,防止抄了数组 Given2001 发表于 2020-3-17 15:59
我编辑了下我的回复,你可以看看,是我的猜测
明白了,谢谢! 解决了,试试代码。冒个泡。
页:
[1]