數算 合格的字串 字串

2021-08-29 01:19:32 字數 1621 閱讀 9779

合格的字串

題目內容:老師給布置了一些作業,讓學生按照乙個模版寫一些字串交上來。現在請你幫老師寫乙個程式,幫助老師確定各個字串是否合格。

首先老師有乙個匹配模版,比如是「aa[123]bb」這乙個字串,如aa1bb、aa2bb、aa3bb都算是正確匹配,而aacbb就是錯誤的字串。(即待查字串對應於模版方括號內的部分,應該為方括號內字串的乙個子字元)。

我們需要做的就是按照模版,找出正確的字串和所在的行。

輸入格式:

輸入的第一行為乙個整數n,表示有多少個學生的作業,即有多少行需要檢查的字串。(1<=n<=50)中間為n行字串,代表著n個學生們寫的作業。每個字串長度小於50。最後一行為1行字串,代表著老師給的匹配模板。

輸出格式:

輸出合格的字串的行號和該字串。(中間以空格隔開)

輸入樣例:

4aab

a2bab

abba[a2b]b

輸出樣例:

1 aab

2 a2b

4 abb

大小寫字母是匹配的

#include #include #include using namespace std;

int lenleft = 0;

int lenright = 0;

string change;

string lefts;

string rights;

bool judge(string hom)

if (l - lenleft - lenright != 1)

return 0;

string tl = t.substr(0, lenleft);

string tr = t.substr(lenleft + 1);

if (tl != lefts || tr != rights)

return 0;

char c = t[lenleft];

if (change.find(c) == string::npos)

return 0;

return 1;

}int main()

cin >> tem;

int l = tem.size();

int le = tem.find('[');

lenleft = le; //1

int ri = tem.find(']');

lenright = l - ri - 1; //7-5-1=1

change = tem.substr(le + 1, l - lenleft - lenright - 2);

lefts = tem.substr(0, lenleft);

rights = tem.substr(ri + 1);

for (int i = 0; i < lenleft; i++)

for (int i = 0; i < l - ri - 1; i++)

for (int i = 0; i < l - lenleft - lenright - 2; i++)

for (int i = 1; i <= n; i++)

return 0;

}

字串 Rabin Karp指紋字串查詢演算法

暴力字串匹配 brute force string matching 是子串匹配演算法中最基本的一種,它確實有自己的優點,比如它並不需要對文字 text 或模式串 pattern 進行預處理。然而它最大的問題就是執行速度太慢,所以在很多場合下暴力字串匹配演算法並不是那麼有用。我們需要一些更快的方法來...

復合格式字串

net framework 復合格式化功能使用物件列表和復合格式字串作為輸入。復合格式字串由固定文字和索引佔位符混和組成,其中索引佔位符稱為格式項,對應於列表中的物件。格式化操作產生的結果字串由原始固定文字和列表中物件的字串表示形式混和組成。復合格式字串和物件列表將用作支援復合格式化功能的方法的引數...

ORACLE in 字串,字串,字串

因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...