字符串查询---51nod

给你两个字符串,一个母串,一个子串,请你找出子串第一次在母串中出现的位置。如果子串没有在母串中出现过,则输出-1。

例如子串ab在母串dceab中第一次出现的位置是3,而子串abc则在dceab中没有出现过。

 收起

输入

第一行一个字符串(母串),保证每个字符都是小写字母。
第二行一个字符串(子串),保证每个字符都是小写字母。
保证两个字符串的长度都不超过10000,并且大于0。

输出

一行一个整数,表示子串第一次在母串中出现的位置。假如子串没有在母串中出现过,则输出-1。

输入样例

decdagee
age

输出样例

4

代码如下:

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
char f[10010],g[10010];
int main() {
    cin>>f>>g;
    int a,b=0,c=0,d[10000],h=1,j=0;

    while(g[b]&&f[j])    //确定长度
{
    if(g[b]==f[j]) {c=1;d[h]=j;b++;h++;j++;}                   //这三段就是确定位置,确定是不是子串。
   else if(c==1&&g[b]!=f[j]){j++;c=0;h=1;b=0;}
   else if(c==0&&g[b]!=f[j]) {j++;h=1;c=0;b=0;}

}
if(c==1) cout<<d[1];   //输出位置
else cout<<-1;

    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值