检查表达式中的括号是否匹配

通过栈结构检查括号匹配,遍历字符串,遇到左括号入栈,遇到右括号尝试与栈顶左括号匹配,不匹配或栈空则非法,所有括号检查完栈空为合法格式。
摘要由CSDN通过智能技术生成

借用栈结构

我们用栈来保存未匹配的左括号,从左到右依次扫描字符串。当扫描到左括号时,则将其压入栈中;当扫描到右括号时,从栈顶取出一个左括号。如果能够匹配,比如“(”跟“)”匹配,“[”跟“]”匹配,“{”跟“}”匹配,则继续扫描剩下的字符串。如果扫描的过程中,遇到不能配对的右括号,或者栈中没有数据,则说明为非法格式。当所有的括号都扫描完成之后,如果栈为空,则说明字符串为合法格式;否则,说明有未匹配的左括号,为非法格式。

package main

import (
	"errors"
	"fmt"
)

type Stack struct {
   
	arr       []interface{
   } //切片
	stackSize int           //栈中元素的个数
}

func NewStack()Stack  {
   
	stack:=Stack{
   arr:make([]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值