假设一个表达式由英文字母(小写)、运算符(+、-、*、/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。
输入格式:输入文件stack.in包括一行数据,即表达式。
输出格式:输出文件stack.out包括一行,即“YES”或“NO”。
输入样例#1:
2*(x+y)/(1-x)@
输出样例#1:
YES
输入样例#2:
(25+x)(a(a+b+b)@
输出样例#2:
NO
C++代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
char a[10001];
int i=0,count1=0;
int main()
{
cin>>a;
while(a[i]!='@')
{
if(a[i]=='(')
count1++;
if(a[i]==')')
{
if(count1>=0)
count1--;
break;
}
i++;
}
if(count1!=0)
cout<<"NO";
else
cout<<"YES" ;
}
Java代码
import java.util.Scanner;
public class test {
public static void main(String[] args) {
String a;
int count=0;
Scanner scanner=new Scanner(System.in);
a=scanner.nextLine();
char [] aa=a.toCharArray();
for(int i=0;aa[i]!='@';)
{
if(aa[i]=='(')
count++;
if(aa[i]==')')
{
if(count>=0)
count--;
else
break;
}
i++;
}
if(count!=0)
System.out.println("NO");
else
System.out.println("YES");
}
}