C 演算法提高 字串匹配

2021-10-18 04:14:00 字數 1743 閱讀 6731

問題描述

給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項:當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元;當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。

輸入格式

輸入的第一行包含乙個字串s,由大小寫英文本母組成。

第二行包含乙個數字,表示大小寫敏感的選項,當數字為0時表示大小寫不敏感,當數字為1時表示大小寫敏感。

第三行包含乙個整數n,表示給出的文字的行數。

接下來n行,每行包含乙個字串,字串由大小寫英文本母組成,不含空格和其他字元。

輸出格式

輸出多行,每行包含乙個字串,按出現的順序依次給出那些包含了字串s的行。

樣例輸入

hello15

helloworld

hihihellohihi

grepisagreattool

hello

helloisnothello

樣例輸出

helloworld

hihihellohihi

helloisnothello

樣例說明

在上面的樣例中,第四個字串雖然也是hello,但是大小寫不正確。如果將輸入的第二行改為0,則第四個字串應該輸出。

評測用例規模與約定

1<=n<=100,每個字串的長度不超過100。

#include 

#include

#include

using namespace std;

int bf

(string s,int switch1,string text[

],int n)}if

(x==len1)

cout<<}return0;

}int main()

#include 

#include

#include

using namespace std;

int kmp

(string s,int switch1,string text[

],int n)

else

k = next[k];}

//複製輸入的n個字串,用於輸出

string text2[n]

;for

(int i=

0;i) text2[i]

=text[i]

;//kmp

for(int i=

0;i(x==len1)

cout<<}return0;

}int main()

#include 

#include

#include

using namespace std;

int func

(string s,int switch1,string text[

],int n)

return0;

}int main()

藍橋杯C 試題 演算法提高 字串匹配

給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入的第一行包含乙個字串s,由大小寫英文本母組成。第二行包含乙個數字,表示大小寫敏感的選項,當數字...

字串匹配演算法 字串匹配演算法總覽

字串匹配在文字處理裡非常重要,我們採用簡潔的python 把以下演算法一一實現並講解。樸素演算法 algorithm rabin karp 演算法 有限自動機演算法 finite automation knuth morris pratt 演算法 kmp algorithm boyer moore ...

藍橋杯試題 演算法提高 字串匹配

題目描述 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入格式 輸入的第一...