为什么只拿了90分,求助dalao ,悬赏一关
查看原帖
为什么只拿了90分,求助dalao ,悬赏一关
1037273
封禁用户楼主2023/8/15 19:12
#include<bits/stdc++.h>
using namespace std;
int top;
string s;
char arr[100001];
int main(){
	cin>>s;
	if(s.length()%2!=0){
		cout<<"NO";
		return 0;
	}
	for(int i=0;i<s.length();i++){
		if(top==0 && (s[i]==')' || s[i]==']')){
			cout<<"NO";
			return 0;
		}
		if(s[i]=='(' || s[i]=='['){
			arr[++top]=s[i];
		}
		if(s[i]==')' || s[i]==']'){
			if(arr[top]=='(' && s[i]==')'){
				top--;
			}
			if(arr[top]=='[' && s[i]==']'){
				top--;
			}
		}
	}
	if(top==0){
		cout<<"YES";
	}
	else{
		cout<<"NO";
	}
	return 0;
}

数据如下(未过样例): in:((1*(1+2))((2/1)+(10+2a))+2+3*(2+a)(1+2)+3+2)+(21)-1+(0*0)+(a/3)@ out:YES

2023/8/15 19:12
加载中...