Responsive image

问题 2991 --第8关:查找子串第一次出现的位置

2991: 第8关:查找子串第一次出现的位置

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 235
[提交][状态][讨论版][命题人:]

题目描述

在C语言中<string.h>头文件内,实现了strstr()函数,其函数原型为:

  1. extern char *strstr(char *str1, const char *str2);

它的作用是:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

下面,请你设计算法简单实现函数strstr(),若存在返回子串首次出现的下标(从0开始),若不存在返回-1。

#include<iostream>
#include<string.h>
using namespace std;
int strstr(string s1,string s2)
{//查找子串第一次出现的位置
/**************begin************/





    /**************end************/
}
int main()
{
    string s1, s2;
    while(cin>>s1>>s2)
    {
        if (s1=="0"&&s2=="0") break;
        int pos=strstr(s1,s2);
        cout<<pos<<endl;
    }
    return 0;
}


输入描述

多组数据,每组数据有一行,分别为字符串str1、str2(用空格分开),当两串都为”0”时输入结束。


输出描述

对于每组数据分别输出一行,若子串存在返回子串首次出现的下标(从0开始),若不存在返回-1;

样例输入

bjfuacm bjfu
datastructure hello
aaaaaaaaaaab ab
0 0

样例输出

0
-1
10

提示


组合提交代码,你需要提交





int strstr(string s1,string s2)


{//查找子串第一次出现的位置


/**************begin************/














    /**************end************/


}




来源

 

[提交][状态]
ACM算法攻关部