表达式括号匹配(c++题解)

发布时间:2024年01月23日

题目描述

假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成, 以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。

输入格式

输入包括一行数据,即表达式

输出格式

输出文件包括一行,即“YES” 或“NO”。

样例

【样例输入 1】

复制2*(x+y)/(1-x)@

【样例输出 1】

复制YES

【样例输入 2】

复制(25+x)*(a*(a+b+b)@

【样例输出 2】

复制NO

_____________________________________________________________________________

日常发作业题解。?

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?

_____________________________________________________________________________

#include <bits/stdc++.h>
using namespace std;
int n,idx=0;
string x;
char stk[100005];
void push(char x){
	stk[idx++]=x;
}
int top(){
	return stk[idx-1];
}
void pop(){
	idx--;
}
bool empty(){
	return idx==0;
}
int main(){
    idx=0; 
    cin>>x;
    bool flag=true;
    for(int j=0;j<x.size()-1;j++){
    	if(x[j]!='('&&x[j]!=')')continue;
    	if(x[j]=='('){
    		push(x[j]);
		}else if(!empty()&&(x[j]==')'&&top()=='(')){
			pop(); 
		}else{
			flag=false;
			break;
		}	
	}
	if(flag!=false&&empty())cout<<"YES\n";	
	else cout<<"NO\n";
}

文章来源:https://blog.csdn.net/hb_zhyu/article/details/135773500
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。