面试题:栈——括号匹配

栈的应用:括号匹配

原题链接:https://leetcode-cn.com/problems/valid-parentheses/

括号匹配:

依次遍历字符串中的每一个字符
如果是左括号
压栈
如果是右括号
判断当前栈是否为空栈
右括号多于左括号        return false

取出栈顶括号(左括号)
拿左括号和右括号进行匹配
如果不匹配                return false
弹出栈顶的左括号

如果栈里还有左括号,左括号多        return false

return true    

 

代码如下:

bool isValid(string s)
{
	stack<char> stack_ch;
	int size = s.size();    // 返回字符串的长度
	for (int i = 0; i < size; i++)
	{
		char ch = s[i];
		switch (ch)
		{
		case '(':
		case '[':
		case '{':
			stack_ch.push(ch);
			break;
		case ')':
		case ']':
		case '}':{
					 if (stack_ch.empty())
					 {
						 return false;
					 }
					 char left = stack_ch.top();
					 if (!((left == '(' && ch == ')')  //右括号多于左括号	
						 || (left == '[' && ch == ']')
						 || (left == '{' && ch == '}'))) 
					 {

						 return false;
					 }
					 stack_ch.pop();
					 break;
				 }
		default:
			break;
		}
		if (!stack_ch.empty()) {
			return false;
		}
		else {
			return true;
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值