表达式括号匹配

假设一个表达式由英文字母(小写)、运算符(+、-、*、/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右括号是否匹配,若匹配,则返回“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");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41611106/article/details/80503084