乙個合法的括號串,是指只包含括號的串,如果滿足如下條件:
(1)<> () {} 這四對括號是合法的;
(2)如果r是合法括號串,則 ® [r] 也是;
(3)如果r,s是合法括號串,則rs也是;
所以<<>> , [<>{}(())],[()]是合法的括號串,而)(,[( ])就不是。
輸入第一行正整數t (10 ≤ n ≤ 100),表示有多少組測試資料。後面有t行,每行乙個只包含8種括號符號的括號串。40%的括號串的長度l 2 ≤ l≤ 20;30%的括號串的長度l 2 ≤ l≤ 200;20%的括號串的長度l 2 ≤ l≤ 2000;10%的括號串的長度l 2 ≤ l≤ 20000;
##【輸出形式】對於每組測試資料,如果括號串是合法的,輸出「yes」(輸出沒有引號)佔一行,否則,輸出「no」(輸出沒有引號)佔一行。
6<<>>
)([<>{}(())]
[()]
[(])
}else if(str[i]=='}')else
}else if(str[i]==']')else
}else if(str[i]==')')else
}} if(i==len&&flag&&ch.empty()) cout<
一、stack 棧
stack依舊是stl中的容器,重要的是它可以實現先進後出的功能,下面介紹一些他的功能。
1.標頭檔案 :#include < stack>
2.stack的定義: stack < typename> name;
<>中是棧中的變數型別,例如:int char······可任意基本資料型別或容器。 name是定義的棧名。
3.stack中的元素訪問
stack本身是一種先進後出的資料結構,所以不能像vector一樣用下標訪問,它只能用top()訪問棧頂元素。
例如:
#include #include using namespace std;
int main(){
stackch;
ch.push('a');
ch.push('b');
ch.push('c');
cout<4.stack函式
(1)push(x)
向棧推頂加入新元素,可以理解為加入迭代器為0的元素。
(2)pop(x)
棧頂元素出棧,用法與push(x)類似,可以理解為刪除棧頂元素。
(3)top()
訪問棧頂元素,返回typename型的元素。
(4)empty()
返回bool型變數,檢測棧是否為空,是空的返回true,否則返回false。
例如:#include #include using namespace std;
返回int型變數,代表棧中元素的個數。
(6)search()
尋找目標第乙個出現的位置距離棧頂的距離,不存在的話返回值為-1。
合法的括號串(C 實訓題,棧)
問題描述 乙個合法的括號串,是指只包含括號的串,如果滿足如下條件 1 這四對括號是合法的 2 如果r是合法括號串,則 r 也是 3 如果r,s是合法括號串,則rs也是 所以 是合法的括號串,而 就不是。輸入形式 輸入第一行正整數t 10 n 100 表示有多少組測試資料。後面有t行,每行乙個只包含8...
LeetCode 1 檢查括號出現的合法性
題目 檢查字串中 的合法性,即是否成對出現 eg,如出現 為合法,出現 為不合法 如下 class a object def isvalid self,s stack paren map for c in s if c not in paren map 如果不是右括號,即是左括號 elif not ...
資料結構之棧的應用(判斷字串中括號的合法性)
需求 判斷乙個字串中的括號是否成對,是否合法?const str1 3223 2 2 2 const str2 22 12 sf1 sdfs 步驟 1.引入棧結構的建構函式 const stack require stack const str1 3223 2 2 2 const str2 22 1...