利用堆栈解决括号匹配问题 [C语言][括号序列][有效的括号][堆栈] 题目描述: 给出一个仅包含字符'(‘,’)’,'{‘,’}’,'[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,”()”和”()[]{}”都是合法的括号序列,但”(]”和”([)]”不合法。 题目来源: 括号序列_牛客题霸_牛客网 力扣 题解: 拿来自己的堆栈模板(写好了堆栈的创建入栈出栈等基础操作的代码),再往模板里添加 非法输入检查函数IsIllegal()和括号匹配检查函数Check(),然后在main()函数就可以测试效果了。 括号匹配检查函数为解决问题的核心代码 主要思路: 首先先考虑限定条件: 1.题目规定,输入的字符串仅由括号构成。如果不止由括号构成可以自己再写个过滤器,具体函数如下: 2.括号匹配的情况下,字符串数量一定是偶数个。所以输入的字符串长度为奇数的话,直接返回不匹配 之后确定匹配思路: 逐个遍历字符串 遇到 { [ ( 这些左括号时便将其入栈 遇到 ) ] } 这些右括号时查看栈顶素是否为匹配的左括号,并将其出栈,是的话就通过,进入下一个循环,不是的话就直接返回不匹配 A.当右括号多时,即入栈少出栈多,在循环内每次出栈前添加判断,如果堆栈为空,就为不匹配 B.当左括号多时,即入栈多出栈少,在循环结束后,堆栈内还有素,此时也算括号不匹配 当左右括号一样多且括号都能匹配的时候,就返回匹配 具体代码如下: 完整代码如下: 几次测试结果的运行截图
菜鸡第一次写博客,如果有啥bug或者啥建议可以吐槽一下qwq
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/23236.html