C++符号匹配判断

符号匹配的核心思想是利用顺序栈来解决,此处的符号只有四类“{}”,“[]”,“<>”,“()”,输入一串符号 ,其中如果是“{[(<”这四种,则直接放入栈中,反正如果是“)}]>”这四类则要考虑栈中当前的符号是否与之对应,很显然,如果当前栈中的符号不匹配,那么符号必定不匹配。反之最后进行一系列入栈出栈后,这串字符串已经遍历完毕且栈为空,那么符号匹配成功。

在这里插入图片描述
代码如下

bool bracket(char *chars){
	Stack<int> stack = Stack<int>(100);
	int len=strlen(chars);
	cout << len <<endl;
    for(int i=0;i<len;i++){
    	char ch = chars[i];
    	if(ch=='{' || ch=='[' || ch=='(' || ch=='<'){
    		stack.Push(ch);
		}else{
			char temp = stack.Pop();
			if(ch=='>'){
			    if(temp != '<'){
				    return false;
			    }
		    }else if(ch==')'){
			    if(temp != '('){
				    return false;
			    }
		    }else if(ch=='}'){
			    if(temp != '{'){
				    return false;
			    }
		    }else if(ch==']'){
			    if(temp != '['){
				    return false;
			    }
		    }
		} 
	}
	if(stack.IsEmpty()){
		return true;
	}
	return false;
} 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值