欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

习题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;
}

习题11-6 查找子串

相关标签: PTA题集