字符串匹配
 

题目描述

设计一个程序,从一个主字符串中查找一个子字符串在主串中第一次出现的位置。主串和子串的长度不超过100。如果找不到,则输出-1.

程序输入说明

第一行输入一个整数N,说明需要进行匹配的实例数。
第二行输入第一组需要进行匹配的主串
第三行输入第一组需要匹配的子字符串。
以下各行按照上面两行的格式输入,直到输入了N组匹配实例。

程序输出说明

输出N行,每行显示对应的匹配组中子串在主串中第一次出现的位置。

程序输入样例

3
abaaaaaa
a
bacdeagb
ac
aaaa
bb

程序输出样例

1
2
-1
 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; typedef char* String; int len1,len2;
char S[];
char T[]; void get_next(String T,int *next){
int j = ;
int i = ;
next[] = ;
while( i<len2 ){
if(==j || T[i]==T[j])
{
i++;
j++;
next[i] = j;
}
else{
j = next[j];
}
}
} int Index_KMP(String S,String T,int pos){
int i=pos;
int j=;
int next[];
get_next(T,next);
while(i<=len1&&j<=len2){
if(j==||S[i]==T[j]){
i++;
j++;
}
else{
j=next[j];
}
}
if(j>len2){
return i-len2;
}
else
return -;
} int main(){
int n;
cin>>n;
while(n--){
scanf("%s%s",S+,T+);
len1 = strlen(S+);
len2 = strlen(T+);
printf("%d\n",Index_KMP(S,T,));
}
return ;
}

BF算法

 //BF算法
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; char s[],t[];
int len1,len2; int main(){
int n;
cin>>n;
while(n--){
scanf("%s%s",s,t);
len1 = strlen(s);
len2 = strlen(t);
int i = ,j = ;
while( i < len1 && j < len2 ){
if( s[i] == t[j] ){
i++;
j++;
}
else{
i = i-j+;
j = ;
}
}
if( j == len2 )
cout<<i-j+<<endl;
else
cout<<"-1"<<endl;
}
return ;
}

最新文章

  1. C# Stream
  2. 设计模式/原则篇- Unit of Work
  3. POJ 2481Cows(树状数组 + 好题)
  4. HDU 4649 Professor Tian(DP)
  5. javascript耐人寻味
  6. 用C语言实现评论系统设计 - 无数据库版
  7. bzoj 1228: [SDOI2009]E&amp;D 阿达马矩阵
  8. SVN使用方法总结
  9. 快速设置IP的脚本
  10. spring boot maven 插件
  11. 2、jQuery的一些静态方法
  12. Lua 语言基本语法
  13. Foreach循环输出索引值
  14. passive 的事件监听器(转载)
  15. bat语法需要注意的地方
  16. 【.Net】鼠标点击控制鼠标活动范围 ClipCursor
  17. [翻译] NSDate-TimeAgo
  18. help()
  19. sql server学习路径地址
  20. 20165207 预备作业3 Linux安装及学习

热门文章

  1. For... in 及 For… of 及 forEach
  2. 2 webpack 4 加vue搭建开发环境最终配置
  3. MySQL: Can’t connect to MySQL server on (111 “Connection refused”)
  4. js中拼接html代码时onclick参数问题
  5. GNS3
  6. 编码、加密、Hash
  7. JVM之Java运行时数据区(线程隔离区)
  8. 一篇文章教你如何部署.NET Core WPF应用,你还在等什么?
  9. 如何查看float在内存中存储方式
  10. VS 项目清理小工具 ClearSolution