列表

详情


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")

上一题