給定乙個只包含 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
1.左括號必須用相同型別的右括號閉合
2.左括號必須以正確的順序閉合
空字串可以被認定為有效字串
示例一:
輸入:"()"
輸出:true
示例二:
輸入:"(){}"
輸出:true
示例三
輸入:"(]"
輸出:false
示例四:
輸入:"[(])"
輸出:false
示例五:
輸入:""
輸出:true
我都答案(未完成):
bool isvalid(string s) ',')'};
int b[6] = ;
int c[len];
//int p_index, q_index;
int x=0;
for(int i = 0,k=0; i括號匹配,首先應該想到利用棧的知識來求解本題。(詳見資料結構第三章棧與佇列)
棧(stack)又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。
bool isvalid(string s) 』,』]』,判斷棧頂是否為對應左邊的括號』(,』{』,』[』。如果是的話,棧頂元素退棧。如果不是的話,說明括號不匹配,直接返回false。當遇到左邊的括號』(,』{』,』[』,進棧。最後,當棧為空,說明所有的括號都匹配了。直接返回st.empty();
技巧:判斷左右括號是否匹配,從ascii碼表中,知道右邊的括號減去左邊的括號為1或者2的時候,說明括號匹配了。
Day6上 括號匹配專項
滑稽的題 t1 include include include include include include include using namespace std intn inta,b,x intmain if x 10 else if x 20 if a 3 b printf no n re...
演算法學習 Day6
實現乙個加法器,使其能夠輸出a b的值。輸入包括兩個數a和b,其中a和b的位數不超過1000位。可能有多組測試資料,對於每組資料,輸出a b的值。示例1 2 6 10000000000000000000 10000000000000000000000000000000 8 1000000000001...
每日一題 day6
基礎題 1 兩個棧實現乙個佇列 思路 棧的特點 後進先出 佇列的特點 先進先出 兩個棧可將乙個棧用於入資料,另乙個用於出資料 define crt secure no warnings include includetemplate class myqueue void pop 刪除頭部資料 s2....