全部评论 2

  • 4

    1周前 来自 浙江

    0
  • #include <iostream>
    using namespace std;
    
    char s[1010];
    int TOP;
    
    void push(char x) {
    	s[++TOP] = x;
    }
    
    void pop() {
    	--TOP;
    }
    
    char top() {
    	return s[TOP];
    }
    
    bool empty() {
    	return TOP == 0;
    }
    
    int size() {
    	return TOP;
    }
    
    int main() {
    	char a;
    	while (cin >> a) {
    		if (a == '@')break;
    		if(a != '(' && a != ')' &&  a != '{' && a != '}' ) continue;  
    		else if (a == '(' || a == '{'  ) push(a);  //左括号入栈 
    		else if (empty() || (a == ')' && top() != '(') || (a == '}' && top() != '{' )) {
    			//栈空或者遇到右括号,则栈顶会有与之匹配的左括号,如果没有则括号不匹配
    			cout << "NO"; 
    			return 0;
    		} else if ((a == ')' && top() == '(') ||(a == '}' && top() == '{' )){
    			//遇到右括号,栈顶 有与之匹配的左括号,则出栈 
    			pop();
    		}
    	}
    	if (empty()) cout << "YES"; //栈空,匹配 
    	else cout << "NO";
    	return 0;
    }
    

    2026-09-23 来自 浙江

    0

热门讨论