为什么检测括号表示要用栈呢??

[复制链接]
查看11 | 回复7 | 2021-1-27 06:00:18 | 显示全部楼层 |阅读模式
(a,b))

对于这个表达式,只有圆括号,非法性,一个左括号和右括号的数目相同,并且括号前面必须有数字,
我认为就合法了,
boolIsValid(intarr[],intlen)
{
intnpos;
intleftBrackets,rightBrackets;
leftBrackets=rightBrackets=0;
for(nPos=0;nPos -->
回复

使用道具 举报

千问 | 2021-1-27 06:00:18 | 显示全部楼层
1+1)+1+(1+1
回复

使用道具 举报

千问 | 2021-1-27 06:00:18 | 显示全部楼层
入栈的操作数大于等于出栈的操作数等价于左括号数大于等于右括号数
转换为数学问题的话,就是卡特兰数
回复

使用道具 举报

千问 | 2021-1-27 06:00:18 | 显示全部楼层
ls2位
请教
为什么你们遇到这种问题就会想到用栈来求解
栈的特征;firstinlastout

你们说说对于括号检测的题目,什么地方符合firstinlastout的特征呢??

回复

使用道具 举报

千问 | 2021-1-27 06:00:18 | 显示全部楼层
从左向右,第一个")"一定是和它之前的最后一个"("匹配,所以每遇到一个")",就一定可以从栈顶取出一个"("与其匹配,且遍历结束后栈为空,否则就不合法
引用3楼的回复:ls2位
请教
为什么你们遇到这种问题就会想到用栈来求解
栈的特征;firstinlastout

你们说说对于括号检测的题目,什么地方符合firstinlastout的特征呢??

回复

使用道具 举报

千问 | 2021-1-27 06:00:18 | 显示全部楼层
逆波兰顺序
回复

使用道具 举报

千问 | 2021-1-27 06:00:18 | 显示全部楼层
这个东西你的确想得很深,如果你想问是怎么来的,建议你去看看编译原理相关的东西。里面会讲得很详细。
回复

使用道具 举报

千问 | 2021-1-27 06:00:18 | 显示全部楼层
引用6楼的回复:这个东西你的确想得很深,如果你想问是怎么来的,建议你去看看编译原理相关的东西。里面会讲得很详细。
你会吓着他的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行