时间限制: 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用户请注意:两个字符串之间可能包含多个空格

思路

首先,这是个暴力模拟的题;

然后,可以用KMP算法A掉!

所以。。。

代码实现

 1 #include<cstdio>
 2 #include<cstring>
 3 const int maxn=110;
 4 int p[maxn],la,lb;
 5 char a[maxn],b[maxn];
 6 int main(){
 7     scanf("%s%s",a,b);
 8     la=strlen(a),lb=strlen(b),p[0]=-1;
 9     for(int i=1,j=-1;i<lb;i++){
10         while(j>-1&&b[j+1]!=b[i]) j=p[j];
11         if(b[j+1]==b[i]) j++;
12         p[i]=j;
13     }
14     for(int i=0,j=-1;i<=la;i++){
15         while(j>-1&&b[j+1]!=a[i]) j=p[j];
16         if(b[j+1]==a[i]) j++;
17         if(j==lb-1){
18             printf("%d\n",i-lb+2);
19             return 0;
20         }
21     }
22 }

转载于:https://www.cnblogs.com/J-william/p/7077723.html

[codeVS1204] 寻找子串位置相关推荐

  1. [1204 寻找子串位置] 解题报告

    题目描写叙述 Description 给出字符串a和字符串b,保证b是a的一个子串.请你输出b在a中第一次出现的位置. 输入描写叙述 Input Description 仅一行包括两个字符串a和b 输 ...

  2. Problem A: 算法4-5:求子串位置的定位函数

    Problem Description 在算法4-1中已经描述过一种定位子串的算法,但其依赖字符串的其他操作(使用了算法4-3描述的子串提取以及字符串比较). 下面给出书中另一种相对独立的定位子串算法 ...

  3. UCSC寻找基因位置并用IGV画出基因转录示意图

    寻找基因位置并寻找出基因转录示意图 我们这里教大家采用两种方法进行基因转录示意图的查找,一种是直接在UCSC里面进行查找,不过不够方便,并且背景有条纹.另一种是下载基因注释文件到IGV基因可视化软件里 ...

  4. 寻找北极星位置:look_for_the_edge_and_north_star

    寻找北极星位置:look_for_the_edge_and_north_star 主函数代码 需要调用的函数 obtain_subfolder_path 运行代码 代码逻辑 主函数代码 #%***** ...

  5. C语言 题目 1689: 数据结构-求子串位置的定位函数

    题目描述 在算法4-1中已经描述过一种定位子串的算法,但其依赖字符串的其他操作(使用了算法4-3描述的子串提取以及字符串比较). 下面给出书中另一种相对独立的定位子串算法: 图:求子串位置的定位函数 ...

  6. 一般的模式匹配算法(求子串位置)

    //一般的模式匹配算法#include<stdio.h>int Index (char *s , char *t , int pos );//返回子串t在主串s中第pos个字符之后的位置( ...

  7. [Nowcoder] 寻找子串

    给出一个非空的字符串,判断这个字符串是否是由它的一个子串进行多次首尾拼接构成的. 例如,"abcabcabc"满足条件,因为它是由"abc"首尾拼接而成的,而& ...

  8. stringbuilder寻找字符串位置可能存在多个 java_【面试题系列】——Java基础

    本文主要包括Java基础及面向对象相关面试题. 1,Java科普1.1 为什么安装包要分JDK和JRE?1.2 为什么Java语言是跨平台的?1.3 为什么安装完JDK后要设置环境变量?1.4 Jav ...

  9. stringbuilder寻找字符串位置可能存在多个 java_Java 语言基础amp;String

    Java 语言基础 String 字符串的不可变性 定义一个字符串 使用变量来赋值变量 String s2 = s; s2 保存了相同的引用值, 因为他们代表同一个对象 字符串连接 s = s.con ...

最新文章

  1. LEGv8指令集中分支和跳转的地址范围
  2. apache 配置rewrite模块,URL中隐藏index.php
  3. Mule ESB 学习笔记
  4. 放假了,暂告一段落,迎接研究生
  5. HDU- 1754 I Hate It
  6. swift中的let和var有什么区别?
  7. 关于VisualStudio性能分析数据中的独占样本数和非独占样本数的意义
  8. Fiddler环境配置教程
  9. abb工业机器人电压不稳_ABB工业机器人常见故障及解决方法,想要提升自己的就赶紧保存下来吧...
  10. 联想网络同传系统用户手册(联想EDU应用用户手册)[联想硬盘保护,联想网络控制工具]
  11. 2020-04-17-E-prime常见问题汇总
  12. 机器学习从业者人手必备的8本书
  13. 【NOIP提高A组模拟2018.8.8】没有硝烟的战争
  14. 【 leetcode Top 100】64. 最小路径和
  15. 中华好诗词大学季第二季(四)
  16. 【css】渐变-背景渐变、边框渐变、文字渐变
  17. 什么是短信平台api接口?
  18. App上线相关法律常识
  19. ThreadLocal 是什么?有哪些使用场景?
  20. 应对供应链紧张,Digi发布 XBee RR模块

热门文章

  1. 学习IOS 开发需要什么?
  2. 【win32汇编】0x04 第一个窗口程序
  3. 如何在Visual Studio 2010 32 Bits中的通过Project的Post-build Event执行 64bits的PowerShell
  4. linux之dd命令
  5. JVM老年代垃圾收集器Serial Old和Parallel Old
  6. [转]使用Git Submodule管理子模块
  7. 安装cnpm (npm淘宝镜像)
  8. 《从零开始学Swift》学习笔记(Day 59)——代码排版
  9. Redis源代码分析(十)--- testhelp.h小测试框架和redis-check-aof.c 日志检测
  10. STL 源代码分析 算法 stl_algo.h -- includes