#P1456. 2024.10.16-秋招-第2题-求最大括号表达式

2024.10.16-秋招-第2题-求最大括号表达式

题目内容

有效括号表达式定义:

11、空串和()()均为有效表达式。

22、当ABA、B为有效表达式时,则(A)AB(A)、AB也均是有效的括号表达式,比如:AA()(),则 ()()()()和(())$均为有效括号表达式。

括号表达式的值:左括号用11表示,右括号用00表示,该二进制序列对应的值即为括号表达式的值。

现给定一个有效括号表达式,对其中任意两个相邻的子"有效表达式”进行交换,求在任意次数(包含0次)的交换之后,能够得到的值最大的括号表达式。

说明:

11、表达式自身是有效表达式。

22、交换的必须是相邻且有效的。

输入描述

给定一个有效括号表达式,只包含左右括号"()”。 表达式的长度不超过6060

输出描述

在任意次数(包含00次)的交换之后,能够得到的值最大的括号表达式

样例1

输入

((()(())))	

输出

(((())()))

说明

将在s[2]s[2]出现的有效表达式“()()”和在s[4]s[4]出现的有效表达式(())(())进行交换。 对应二进制: 11 10 1100 0011\ 10\ 1100\ 00转换为11 1100 10 0011\ 1100\ 10\ 00

样例2

输入

()()

输出

()()

说明

无需交换,交换后也一样

样例3

输入

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

输出

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

说明

交换s[89]s[8-9]s[1013]s[10-13],得到()(())(((())()))()(())(((())()))

交换s[25]s[2-5]s[615]s[6-15],得到()(((())()))(())()(((())()))(())

交换s[01]s[0-1]s[211]s[2-11],得到(((())()))()(())(((())()))()(())

交换s[1011]s[10-11]s[1215]s[12-15],得到(((())()))(())()(((())()))(())()