首页 > 试题广场 >

完成括号匹配

[编程题]完成括号匹配
  • 热度指数:3759 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
合法的括号匹配序列被定义为:
1. 空串""是合法的括号序列
2. 如果"X"和"Y"是合法的序列,那么"XY"也是一个合法的括号序列
3. 如果"X"是一个合法的序列,那么"[X]"也是一个合法的括号序列
4. 每个合法的括号序列都可以由上面的规则生成
例如"", "[]", "[][][]", "[[][]]", "[[[[]]]]"都是合法的。
牛牛现在给出一个括号序列s,牛牛允许你执行的操作是:在s的开始和结尾处添加一定数量的左括号('[')或者右括号(']')使其变为一个合法的括号匹配序列。牛牛希望你能求出添加最少的括号之后的合法的括号匹配序列是什么。

输入描述:
输入包括一个字符串s,s的长度length(1 ≤ length ≤ 50),s中只包含'['和']'。


输出描述:
输出一个字符串,表示括号完全匹配的序列。
示例1

输入

][

输出

[][]
头像 白伟仝
发表于 2020-09-02 22:16:30
把已匹配到的方括号换成花括号,最后再换回来: import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in) 展开全文
头像 秦时明月2022
发表于 2022-08-17 10:45:43
解题思路 1.使用栈存储未匹配的左右括号,当当前括号为右括号,栈顶元素为左括号时,两括号匹配,将栈顶元素出栈;否则,将当前括号入栈;遍历完字符串后,遍历栈,统计栈中左右括号的数量,即为需要在字符串开头或结尾添加的右左括号数量; 代码 #include <bits/stdc++.h> us 展开全文
头像 17c89
发表于 2024-03-02 12:20:36
import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args){ Scanner in = new Scanner(Sy 展开全文
头像 牛客885318765号
发表于 2023-03-10 15:26:15
package main import ( "fmt" ) func main() { var s string for { n, _ := fmt.Scan(&s) if n == 0 { break 展开全文