題目連結: https://zerojudge.tw/ShowProblem?problemid=b838
# 解題思路
讀入一個 (
就加入堆疊,讀入一個 )
就刪除一個堆疊中的 (
。
若運算中,堆疊元素量不足為不合法;運算結束後,若堆疊能有元素亦為不合法。
# 程式碼
#include <bits/stdc++.h> | |
using namespace std; | |
int main(){ | |
int n; | |
while(cin>>n){ | |
cin.ignore(); | |
for(int i=0;i<n;i++){ | |
stack <char> st; | |
string s; | |
bool a=true; | |
int ans=0; | |
getline(cin,s); | |
for(int j=0;j<s.size();j++){ | |
if(s[j]=='(') st.push('('); | |
else if(s[j]==')') { | |
if(!st.empty())st.pop(), ans++; | |
else {cout<<"0\n" ; a=false; break;} | |
} | |
} | |
if(!st.empty()) {cout<<"0\n"; a=false;} | |
if(a) cout<<ans<<endl; | |
} | |
} | |
} |