NC200434. 合法括号
描述
众所周知,佳爷是集训队最强,他经常喜欢鄙视集训队最菜的PC,这天他又来了,他丢给PC一道题目:
给你一个字符串,该字符串只包含符号 '(’ 和 ‘)', ,我们称那些左右括号可以一一对应的括号字符串为完美字符串,
比如"()()()", "((()))", "((()))()()", 都是完美字符串
而"((())", "()(", "((()))()(" 不是完美字符串。
这么难的题目,PC当然是不会写的,但他又不想被佳爷鄙视,所以他找到了你,聪明的ACMer啊,请你帮PC解出这题把
输入描述
第一行一个整数n,代表字符串的长度 n, 1 <= n <= 1e5
第二行一串字符串s,只包含字符 '(' , ')'。
输出描述
如果该字符串是完美字符串,就输出YES,。否则输出NO
示例1
输入:
4 (())
输出:
YES
pypy3 解法, 执行用时: 79ms, 内存消耗: 21972K, 提交时间: 2023-06-01 19:50:09
n = int(input()) s = input() stk = 0 ok = True for c in s: if c == '(': stk += 1 else: if not stk: ok = False break else: stk -= 1 if stk: ok = False; print('YES' if ok else 'NO')
C(clang 3.9) 解法, 执行用时: 11ms, 内存消耗: 476K, 提交时间: 2019-12-23 10:16:30
#include<stdio.h> int main() { int a,i,sum=0,w=1; char b; scanf("%d",&a); for(i=1;i<=a;i++) { scanf(" %c",&b); if(b=='(') sum++; else sum--; if(sum<0) w=0; } if(sum==0&&w==1) printf("YES"); else printf("NO"); return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 381ms, 内存消耗: 676K, 提交时间: 2022-09-21 21:26:40
#include<bits/stdc++.h> using namespace std; int len; string s; int main() { cin>>len>>s; while(s.find("()")!=-1) { s.erase(s.find("()"),2); } if(s.size()==0) cout<<"YES"; else cout<<"NO"; }
Python3 解法, 执行用时: 51ms, 内存消耗: 4792K, 提交时间: 2023-03-12 11:04:31
n=int(input()) s=input() while "()" in s: s=s.replace("()","") if len(s)==0: print("YES") else: print("NO")