发布时间:2022-12-17 11:00
在我自己学习的过程中,难免会遇到许多复杂的算法问题。解决问题的一个好方法就是查找资料、参考别人的逻辑思维。而有一些问题是查找不到的,也可能是文章写的太乱、太难、太复杂。在这里我分享一下我个人的看法以及思路。
在我们打代码的过程中,会经常使用到括号,如果我们使用的代码不得当,那么编译器就会报错。当然了就我的水平而言不可能把编译器的机制搬到这里来。
比如说,我们输入了{[]}()这串括号组,很明显,这是一个正确的括号组。
再比如说,我们输入了{[}]这串括号组,显然,这是一个错误的括号组。
那么如何通过程序来实现这个判断是否合法的功能呢?
其中一个原理叫做——栈。
先举一个例子。
我们把所有左括号通过循环放入栈中。遇到右括号,与栈顶进行匹配。
成功一对从栈中拿走一个元素。
通过top--的操作指向栈的下一个元素。
上面这个例子是一次性把所有左括号放入栈中。
那我们碰到这样一个例子呢?
当我们要把元素存入栈时,突然碰到右括号,我们也可以这样执行这个操作。
#include
#include
int main()
{
char arr[100];
char s[100];
gets(arr);
int len=0;
int top=-1;
len=strlen(arr);
for(int i=0;i