字串匹配問題 基礎棧

2021-10-23 19:36:18 字數 1270 閱讀 5234

字串匹配問題:

題目描述

字串中只含有括號 (),,<>,{},判斷輸入的字串中括號是否匹配。如果括號有互相包含的形式,從內到外必須是<>,(),,{},例如。輸入: [()] 輸出:yes,而輸入(), ()都應該輸出no。

輸入

檔案的第一行為乙個整數n,表示以下有多少個由括好組成的字串。接下來的n行,每行都是乙個由括號組成的長度不超過255的字串。

輸出

在輸出檔案中有n行,每行都是yes或no。

樣例輸入

5{}{}<><>()()

}}<<>><<>>(())(())

}}<<>><<>>(())(())

<<<>><<>>>((<>))(())[[(<>)]]

}<<<>><<>>>((<>))(())[[(<>)]]

樣例輸出

yesyes

yesyes

no思路:

這題比前兩題稍微複雜一點點,但還是比較簡單的,要注意的是這裡的括號要按照一定順序,不然輸出的是no。

那麼為了更好的比較每個括號,畢竟這裡有8鐘括號,所以我們可以用數字來表示他們,這樣不僅簡便,並且讓比較更方便。

那麼有了上面的思路,接下來就簡單多了,只要判斷讀入的括號是否與棧頂的括號相匹配,是則出棧,不是則入棧。

最後判斷棧是否被清空就可以了!

**:

#include

#include

#include

using

namespace std;

int n,t,a[

1001

],z[

1001];

char s[

1001];

void

cmd(

int a)

') a[i+1]

=8;}

}int

main()

if(a[j]

>=5)

}if(t==

0) cout<<

"yes"

else cout<<

"no"

<}}

我講的這麼好,你還不點贊嗎(瘋狂暗示)

字串匹配問題

在字串匹配問題中,我們期待察看串t中是否含有串p。其中串t被稱為目標串,串s被稱為模式串。進行字串匹配,最簡單的乙個想法是 public class match 可以看見,這個演算法 假定m n 的複雜度是o mn 其中m是t的長度,n是p的長度。這種演算法的缺陷是匹配過程中帶有回溯 準確地說是t串...

字串匹配問題

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

字串匹配問題

字串中只含有括號 判斷輸入的字串中括號是否匹配。如果括號有互相包含的形式,從內到外必須是 例如。輸入 輸出 yes,而輸入 都應該輸出no。第一行為乙個整數n,表示以下有多少個由括好組成的字串。接下來的n行,每行都是乙個由括號組成的長度不超過255的字串 在輸出中有n行,每行都是yes或no。5 y...