括號配對問題ios
3 [(]) (]) ([[]()])
No No Yes
此題意在考查數據結構-棧的用法。
#include<iostream> #include<stack> using namespace std; int main() { int n, m; cin >> n; while (n--) { char str[10005]; stack<char>s;//定義存儲字符類型數據的棧 。 cin >> str; for (int i = 0; str[i] != '\0'; i++) { if (s.empty()) s.push(str[i]);// 若是棧空,數據直接進棧。 else { if (s.top() + 1 == str[i] || s.top() + 2 == str[i])//根據括號ASC碼差值判斷是否對應 s.pop();//若是str[i]與棧頂的括號對應,則棧頂元素出棧。 else //不然str[i]進棧。 s.push(str[i]); } } if (s.empty())//字符串處理完後,判斷棧是否爲空 。 cout << "Yes" << endl;//棧空則表示全部括號都對應 。 else//反之則有括號不對應。 cout << "No" << endl; } }
若是有錯誤描述,歡迎指出哈!!!!共同探討一塊兒進步!!!數據結構