码迷,mamicode.com
首页 > 其他好文 > 详细

串的模式匹配

时间:2020-06-25 10:08:15      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:模式匹配   测试   ext   编译   svc   mes   个数   out   lan   

给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出。如果找不到,则输出“Not Found”。

本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下:

  • 数据0:小规模字符串,测试基本正确性;
  • 数据1:随机数据,String 长度为 1,Pattern 长度为 1;
  • 数据2:随机数据,String 长度为 1,Pattern 长度为 1;
  • 数据3:随机数据,String 长度为 1,Pattern 长度为 1;
  • 数据4:随机数据,String 长度为 1,Pattern 长度为 1;
  • 数据5:String 长度为 1,Pattern 长度为 1;测试尾字符不匹配的情形;
  • 数据6:String 长度为 1,Pattern 长度为 1;测试首字符不匹配的情形。

输入格式:

输入第一行给出 String,为由英文字母组成的、长度不超过 1 的字符串。第二行给出一个正整数 N(≤),为待匹配的模式串的个数。随后 N 行,每行给出一个 Pattern,为由英文字母组成的、长度不超过 1 的字符串。每个字符串都非空,以回车结束。

输出格式:

对每个 Pattern,按照题面要求输出匹配结果。

输入样例:

abcabcabcabcacabxy
3
abcabcacab
cabcabcd
abcabcabcabcacabxyz
 

输出样例:

abcabcacabxy
Not Found
Not Found

方法一:

 1 #include <bits/stdc++.h>
 2 char str[1000000];
 3 char str1[1000000];
 4 using namespace std;
 5 int main()
 6 {
 7     cin>>str;
 8     int n;
 9     cin>>n;
10     char *p;
11     for(int i=0;i<n;i++)
12     {
13         cin>>str1;
14         if(p=strstr(str,str1))
15             printf("%s\n",p);
16         else
17             printf("Not Found\n");
18     }
19 } 

注意:1、include<bits/stdc++.h> 包含所有的可用到的C++库函数,缺点是会增加编译时间,且可能在一些编译器上无法编译,比如MSVC;

   2、strstr(s1,s2);查找s2在s1中第一次出现的位置。

 

方法2:

 

串的模式匹配

标签:模式匹配   测试   ext   编译   svc   mes   个数   out   lan   

原文地址:https://www.cnblogs.com/i-chase/p/13190909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!