14
内翻弦
平衡字符串是一串括号,()因此每个括号都可以与另一个匹配。更严格地说,它们是该语法所涵盖的字符串: S → (S)S | ε 我们可以通过以下方式将字符串“由内而外”: 开关的所有事件(,并)互相 将字符从字符串的前面移到后面,直到再次平衡为止。 让我们举个例子。 我们从平衡的字符串开始: (()(())()) 然后我们切换括号 ))())(()(( 然后将字符从字符串的开头移到字符串的后面,直到字符串平衡为止。 ))())(()(( )())(()(() ())(()(()) ))(()(())( )(()(())() (()(())()) 那就是我们的结果! 请注意,有些字符串可以用多种方式内翻,例如字符串 (()()) 从里到外可以是: ()(()) 要么 (())() 但是,每个字符串至少都有一个解决方案。 任务 编写一个程序,以平衡的字符串作为输入并输出,该字符串由内而外。如果可能有多个有效输出,则只需要输出其中之一即可。您可以使用不同的支柱型(<>,[]或{}),如果你愿意的话。 这是一场代码高尔夫竞赛,因此您应力求最大程度地减少以字节为单位的源代码大小。 测试用例 (()()) -> ()(()), (())() (()(())()) -> (()(())()) ((())())() -> (()(()()))