题目描述
现在有一组括号,请你判断括号是否匹配
输入
输入一行字符串,只包含’(‘ ’)’这2种字符,保证不输入空字符串
输出
输出YES或者NO,表示括号是否匹配
样例输入 复制
(()()) ())(
样例输出 复制
YES NO
题解
#include<bits/stdc++.h>
using namespace std;
stack<char> st;
int main(){
string s;
while(cin >> s){
bool flag = false;
for(char c : s){
if(c == '(')st.push(c);
else if(c == ')'){
if(!st.empty()){
st.pop();
}else flag = true;
}
}
if(!st.empty() || flag)cout << "NO" << '\n';
else cout << "YES" << '\n';
stack<char> ().swap(st);
s.clear();
}
return 0;
}
技巧
- 清空字符串
s.clear();
- 清空栈
stack<int> ().swap(st);