面试题:栈——括号匹配

栈的应用:括号匹配

原题链接: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;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42659468/article/details/89542089