• C++之路进阶——codevs1204(寻找子串位置)


    1204 寻找子串位置

     

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 青铜 Bronze
     
     
    题目描述 Description

    给出字符串a和字符串b,保证b是a的一个子串,请你输出b在a中第一次出现的位置。

    输入描述 Input Description

    仅一行包含两个字符串a和b

    输出描述 Output Description

    仅一行一个整数

    样例输入 Sample Input

    abcd bc

    样例输出 Sample Output

    2

    数据范围及提示 Data Size & Hint

    字符串的长度均不超过100

    Pascal用户请注意:两个字符串之间可能包含多个空格

    代码:

         

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<string>
     4 #define maxn 10000
     5 
     6 using namespace std;
     7 
     8 int p[maxn];
     9 
    10 int main()
    11   {
    12       string a,b;
    13       cin>>a>>b;
    14       int n=a.length();
    15       int m=b.length();
    16       a=" "+a;
    17       b=" "+b;
    18       int j=0;
    19       for (int i=2;i<=m;i++)
    20          {
    21                 while (j>0&&b[j+1]!=b[i]) j=p[j];
    22                 if (b[j+1]==b[i])j++; 
    23                 p[i]=j;
    24           } 
    25     j=0;
    26     for (int i=1;i<=n;i++)
    27        {
    28               while (j>0&&b[j+1]!=a[i]) j=p[j];
    29               if (b[j+1]==a[i]) j++;
    30            if (j==m) {printf("%d",i-m+1);return 0;}       
    31              }      
    32   }
  • 相关阅读:
    eclipse注释模板__自动生成方法注释
    java HashMap--统计其中有相同value的key的个数
    java synchronized 详解
    进程间通信-共享内存
    辅导-计算机编程方面
    gnu make
    适应c++ 新特性
    tomcat服务器
    springmvc笔记
    Idea使用SVN教程
  • 原文地址:https://www.cnblogs.com/grhyxzc/p/5147123.html
Copyright © 2020-2023  润新知