棧的應用 九度OJ 1153 括號匹配問題

2021-10-09 23:55:30 字數 1079 閱讀 8184

題目描述:

在某個字串(長度不超過100)中有左括號、右括號和大小寫字母;規定(與常見的算數式子一樣)任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹配的左括號用"$"標註,不能匹配的右括號用"?"標註.
輸入:

輸入包括多組資料,每組資料一行,包含乙個字串,只包含左右括號和大小寫字母,字串長度不超過100。

注意:cin.getline(str,100)最多只能輸入99個字元!

輸出:

對每組輸出資料,輸出兩行,第一行包含原始輸入字元,第二行由"$","?"和空格組成,"$"和"?"表示與之對應的左括號和右括號不能匹配。
樣例輸入:

)(rttyy())sss)(
樣例輸出:

)(rttyy())sss)(

? ?$

#include

#include

#include

using

namespace std;

/*思想:遍歷字串,將左括號入棧,遇見右括號時判斷棧中是否有剩餘左括號,

若有則配對,將左括號出棧,無的話則無法匹配。最後若棧中有剩餘左括號則無法匹配

*/stack<

int> s;

//存放下標

char str[

110]

;char ans[

110]

;int

main()

else

if(str[i]

==')'

)else

}else ans[i]

=' ';}

while

(!s.

empty()

)puts

(str)

;puts

(ans);}

return0;

}

九度OJ 1153 括號匹配問題

此題乃學習使用stack模板第一題。收穫了以下知識點 pop 返回void,故想要獲取棧頂並刪除需要打出top pop組合拳 stack模板申請出的物件長度是動態的,無需靜態分配 題目描述 在某個字串 長度不超過100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內...

九度 OJ 1153 括號匹配問題

在某個字串 長度不超過100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹配的左括號用 標註,不能匹配的右括號用 標註.輸入包括多組資...

學習筆記 九度OJ 題目1153 括號匹配問題

題目1153 括號匹配問題 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 1759 解決 786 題目描述 在某個字串 長度不超過100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括...