AtCoder Beginner Contest 064 D - Insertion

Problem Statement

You are given a string S of length N consisting of ( and ). Your task is to insert some number of ( and ) into S to obtain a correct bracket sequence.
Here, a correct bracket sequence is defined as follows:

  • () is a correct bracket sequence.
  • If X is a correct bracket sequence, the concatenation of (X and ) in this order is also a correct bracket sequence.
  • If X and Y are correct bracket sequences, the concatenation of X and Y in this order is also a correct bracket sequence.
  • Every correct bracket sequence can be derived from the rules above.

Find the shortest correct bracket sequence that can be obtained. If there is more than one such sequence, find the lexicographically smallest one.

Constraints

  • The length of S is N.
  • 1≤N≤100
  • S consists of ( and ).

Input

Input is given from Standard Input in the following format:

N
S

Output

Print the lexicographically smallest string among the shortest correct bracket sequences that can be obtained by inserting some number of ( and ) into S.


Sample Input 1

3
())

Sample Output 1

(())

Sample Input 2

6
)))())

Sample Output 2

(((()))())

Sample Input 3

8
))))((((

Sample Output 3

(((())))(((())))

题意就是给定长度的字符串加括号,使得括号相匹配。

不会。栈模拟半天也不知道怎么弄。看了别人的代码惊为天人!

一言以蔽之就是,先找出已经配对好的不管;剩下有多少个'('字符串后面就补多少个')'、有多少个')'字符串前面就补多少个'('。

直接从代码中领悟吧:

#include<iostream>
#include<string>
using namespace std; int main()
{
int n;
string s;
cin >> n;
cin >> s;
int totl = , totr = ;
for (int i = ; i < s.length(); i++) {
if (s[i] == '(') totl++;
else
{
if (totl > ) totl--;
else totr++;
}
}
for (int i = ; i < totl; i++) s = s + ')';
for (int i = ; i < totr; i++) s = '(' + s;
cout << s << endl;
return ;
}

最新文章

  1. Security8:删除Role 和 User
  2. Java 集合 — HashMap
  3. R Language
  4. 深入研究java.lang.ProcessBuilder类
  5. 用chrome按F12抓包 页面跳转POST一瞬间就闪没了
  6. BZOJ 3969 low power
  7. Light OJ 1036 - A Refining Company
  8. 两台linux机器文件传输之scp
  9. 利用DataImportHandler建索引时一直无法完成
  10. 【原】无脑操作:IDEA + maven + SpringBoot + JPA + EasyUI实现CRUD及分页
  11. python 打印堆栈信息方法
  12. explan各项说明
  13. React-简书视频学习总结
  14. 对jQuery ajax的认识
  15. 华为手机使用objectAnimation异常
  16. ajax 拦截器设置请求头
  17. python爬虫从入门到放弃(一)——试用bs4, request爬百度股票
  18. 20162328蔡文琛 大二week01
  19. 谈谈.NET MVC QMVC高级开发
  20. OpenCV---分水岭算法

热门文章

  1. Ajax和json一道基本的练习题
  2. Redis基本类型与常用命令
  3. Layui表格数据重新载入_表格搜索
  4. 安装node/npm,通过express搭建node项目
  5. js数组操作方法
  6. birt运行环境
  7. idea 创建properties配置文件
  8. 高可用服务 AHAS 在消息队列 MQ 削峰填谷场景下的应用
  9. excel怎么并排查看两个工作表
  10. Java开发中的Memcache原理及实现