PTA題目 串的模式匹配

2021-10-23 02:37:02 字數 1671 閱讀 6080

給定兩個由英文本母組成的字串 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 直觀演算法很簡單,如果字串中當個字元匹配,主串指標...