Go语言实战案例-括号匹配算法(go语言例子)

在编译器、表达式求值、代码格式化等场景中,我们经常需要判断括号是否成对匹配且顺序正确。这是一个经典的栈(Stack)应用问题

一、问题描述

给定一个字符串,判断其中的括号是否匹配。括号可能包括:

  • • 圆括号
  • • [] 方括号
  • • {} 花括号

要求:

  • • 每个左括号必须有对应的右括号
  • • 括号必须按正确的嵌套顺序闭合

示例

  • 输入
  • 输出
  • ""true
  • "([]{})"true
  • "(]"false
  • "([)]"false
  • "{[]}"true
二、算法思路
  1. 1. 使用栈保存未匹配的左括号
  2. 2. 遍历字符串:
    • • 遇到左括号 (、[、{ → 压入栈
    • • 遇到右括号 )、]、} → 弹出栈顶元素,判断是否是对应的左括号
    • • 若不匹配或栈为空 → 返回 false
  3. 3. 遍历结束后,如果栈不为空 → 返回 false
  4. 4. 否则 → 返回 true
三、Go语言实现

packagemainimport("fmt")funcIsValidBrackets(sstring)bool{ stack := []rune{} pairs :=map[rune]rune{')':'(',']':'[','}':'{', }for_, ch :=ranges {switchch {case'(','[','{': stack =append(stack, ch)// pushcase')',']','}':iflen(stack) ==0|| stack[len(stack)-1] != pairs[ch] {returnfalse} stack = stack[:len(stack)-1]// pop} }returnlen(stack) ==0}funcmain { tests := []string{"","([]{})","(]","([)]","{[]}"}for_, t :=rangetests { fmt.Printf("%s -> %v\n", t, IsValidBrackets(t)) }}输出-> true([]{}) -> true(] -> false([)] -> false{[]} -> true

四、复杂度分析

  • 时间复杂度:O(n),只需一次遍历
  • 空间复杂度:O(n),栈最多存储 n 个字符
五、进阶扩展

1. 增加其他符号可以扩展 pairs 表,支持 或自定义符号。

2. 忽略非括号字符在表达式中可能包含数字、运算符,可以在 switch 中只处理括号。

3. 处理大规模数据当输入很大时,可以考虑流式处理(分块判断)。

六、总结

通过本篇案例,你学习了:

  • • 使用栈解决括号匹配问题
  • • Go 语言中 map、slice 的基本操作
  • • 如何分析算法的时间和空间复杂度

栈的应用非常广泛,除了括号匹配,还可用于表达式求值、撤销操作、DFS搜索等场景。

特别声明:[Go语言实战案例-括号匹配算法(go语言例子)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

郭汾阳上海游玩,未见王惠陪伴,亮相乐高乐园,跟社会朋友一起(郭汾阳由来)

赵彤贺,这位『郭德纲』曾笑称为社会朋友的人,也一路陪伴在郭汾阳身边,照片里俩人笑得格外灿烂。 大多数父母都会这样做,『郭德纲』和王惠也不例外。因为这些父母本身就是通过读书和学习获取了现在的社会地位和财富,深知教育…

郭汾阳上海游玩,未见王惠陪伴,亮相乐高乐园,跟社会朋友一起(郭汾阳由来)

卢伟冰:2000-3000元档的“焊门”任务由REDMI Turbo系列完成(卢伟冰调侃还有小米6钉子户)

1月26日消息,小米总裁卢伟冰今日微博发文,谈自己对于即将发布的REDMI Turbo 5 Max产品背后的思考。卢伟冰表示,“Turbo一直是性能王牌和体验进化的标杆。REDMI Turbo的成功,源自两…

卢伟冰:2000-3000元档的“焊门”任务由REDMI Turbo系列完成(卢伟冰调侃还有小米6钉子户)

贾玲被爆不搞笑,不合照,不露面。『娱乐圈』️背后有什么原因?(贾玲被怼)

但这三年,她已经没有再出现在春晚的舞台上,也鲜少在综艺节目中露面,甚至连她的社交账号也变得不常更新。很多人说她好像消失了,但其实她并没有消失,只是将自己的时间和精力投入到了另一件更重要的事情上——拍电影。两个…

贾玲被爆不搞笑,不合照,不露面。『娱乐圈』️背后有什么原因?(贾玲被怼)

『张柏芝』没撒谎,性情大变,闷声发大财的『谢霆锋』,再次证明她的评价(『张柏芝』撒过哪些谎)

如今再回看,她不过是提前把婚姻的真相写在了考卷上:孩子长大了,『谢霆锋』一次都没陪过孩子写作业,从来没开过一次家长会,连疫苗接种本上的字都是妈妈签。『谢霆锋』并不是坏人,他只是将自我排得太前,家对他来说更像是一家酒店…

『张柏芝』没撒谎,性情大变,闷声发大财的『谢霆锋』,再次证明她的评价(『张柏芝』撒过哪些谎)

2026广东省银发春晚精彩节目亮相!快来为你最爱的“银发风采”打call!(广东发展银行是什么性质的银行)

各地市的参赛作品各具特色 凝聚了长辈们的赤诚与才华 都蕴藏着“年龄不设限”的生活态度 都彰显着岭南银发群体的蓬勃活力 你的每一票将让他们的作品 这场汇聚全省各地市热爱的银发盛宴 为你心中“最喜爱的节目”投…

2026广东省银发春晚精彩节目亮相!快来为你最爱的“银发风采”打call!(广东发展银行是什么性质的银行)