給定兩個由英文本母組成的字串 string 和 pattern,要求找到 pattern 在 string 中第一次出現的位置,並將此位置後的 string 的子串輸出。如果找不到,則輸出「not found」。
本題旨在測試各種不同的匹配演算法在各種資料情況下的表現。各組測試資料特點如下:
資料0:小規模字串,測試基本正確性;
資料1:隨機資料,string 長度為 10^5,pattern 長度為 10;
資料2:隨機資料,string 長度為 10^5 ,
pattern 長度為 10^2;
資料3:隨機資料,string 長度為 10^5,
pattern 長度為 10^3 ;
資料4:隨機資料,string 長度為 10^5,
pattern 長度為 10^4;
資料5:string 長度為 10^6,
pattern 長度為 10^5,
測試尾字元不匹配的情形;
資料6:string 長度為 10^6,
pattern 長度為 10^5,
測試首字元不匹配的情形。
輸入第一行給出 string,為由英文本母組成的、長度不超過 10^6的字串。第二行給出乙個正整數 n(≤10),為待匹配的模式串的個數。隨後 n 行,每行給出乙個 pattern,為由英文本母組成的、長度
不超過 10^5的字串。每個字串都非空,以回車結束。
對每個 pattern,按照題面要求輸出匹配結果。
abcabcabcabcacabxy
3abcabcacab
cabcabcd
abcabcabcabcacabxyz
abcabcacabxy
not found
not found
這題目的中,我們可以引用c的庫函式strstr(string1,string2) 。該函式用於判斷字串str2是否是str1的子串。如果是,則該函式返回 str1字串從 str2第一次出現的位置開始到 str1結尾的字串;否則,返回null。
注意:功能:strstr返回乙個指標,指向string2在string1中首次出現的位置。
返回型別:字串型別
傳入引數:引數
一、引數二都是字串型別
分析:由於strstr函式返回的是乙個字串,而且是乙個指標,所以我們需要用乙個char型別的指標來接收該函式的返回值,比如 char *p; p=strstr(string1,string2);
#include
#include
#include
using
namespace std;
intmain()
string output[10]
;//用來接收結果,以供輸出
//錯誤示範:char output[10][100001]; //這裡一定要用string的陣列,否則賦值「not found」的時候賦值不上,因為not found是乙個固定長度的字串,不能複製到char型別的陣列
for(
int i=
0;i)else
}for
(int j=
0;j)return0;
}
串的模式匹配
最近在學 vc include stdafx.h include include define max size 1000 串的模式匹配 功能 找出str2字串在str1字串中第一次出現的位置 不包括串結束符 返回 該位置的序號 環境 visual c 2008 注意 1.此為樸素的模式匹配演算法,...
串的模式匹配
以前每次看到字串匹配,一律跳過,今天耐著性子研究了下,依舊是半混沌狀態,先整理放在這,以備後用。這篇文章幫助很大,樸素匹配演算法 kmp演算法,收藏先。1.樸素匹配演算法 int patternmatch common const char pstring,const char ppattern i...
串的模式匹配
子串的定位操作通常稱作串的模式匹配。index s,t,pos t被稱為模式串。直觀演算法 int index string s,string t,int pos else if j lent return i lent else return 0 直觀演算法很簡單,如果字串中當個字元匹配,主串指標...