括号匹配代码_判断括号是否匹配的算法

括号匹配代码_判断括号是否匹配的算法【Leetcode】循环队列实现和括号匹配问题目录1.循环队列2.括号匹配1.循环队列读过题后,我们很容易认为这道首选题链表,那么我们就以链表的思路分析一下:首先明确一点就是这一块儿链

【Leetcode】循环队列实现和括号匹配问题   目录   1.循环队列   2.括号匹配   1.循环队列   
括号匹配代码_判断括号是否匹配的算法   
括号匹配代码_判断括号是否匹配的算法   读过题后,我们很容易认为这道首选题链表,那么我们就以链表的思路分析一下:   首先明确一点就是这一块儿链表空间已经创建好了   
括号匹配代码_判断括号是否匹配的算法   我们用front和rear分别表示头和尾,那么我们知道初始状态front和rear指向同一个位置,那么不断插入数据rear不断后移,我们发现满的时候front和rear指向同一个位置,那么front和rear指向同一个位置是代表空还是满呢?   这里有两种方式解决,第一种是增加一个size判断空满;第二种是多开一个位置,在最后一个位置之后多开一个空位置,此时当rear和front相等时为空,当rear->next为front时为满。这个问题解决之后我们再看pop,连续的pop只需要让front往后移就可以,那么使用链表最难受的地方在于如何取尾,因为我们的rear指向的是尾的下一个,如果这里我们让rear指向尾,那么我们的初始化又会出问题,因为它会回到最初的front和rear指向同一个位置的空满问题上,当然这里解决方式有很多,比如添加一个prev指针指向front的前一个,或者使用双向链表等等……所以由此看出这道题用链表实际并不是最优解,正解是数组,当然数组思路大致也同上,我们选择多开一个位置,具体思路如下图所示:   
括号匹配代码_判断括号是否匹配的算法   那么我们接下来就完成这道题:   
括号匹配代码_判断括号是否匹配的算法   2.括号匹配   
括号匹配代码_判断括号是否匹配的算法   这道题我们的思路是如果是左括号,则入栈;如果是右括号,则出栈,将取出的左括号与该右括号匹配。比如如果我们给的是(([{}]))(),那么我们一开始都是左括号,都入栈,直到第一个右括号出现出栈一个左括号与之匹配,然后重复操作,直到下一个是左括号,则继续进栈,继续找与之匹配的右括号直到结束。   代码实现一下:当然这道题我们依然需要先把栈的结构给出   
括号匹配代码_判断括号是否匹配的算法

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/19937.html

(0)
上一篇 2024年 9月 15日
下一篇 2024年 9月 15日

相关推荐

关注微信