采用栈的结构来检查,遇到左括号则入栈,遇到右括号则对应出栈。如果出栈时没有遇到相应的左括号则表示括号不匹配。如果在最后栈中有元素则表示右括号不足,也表示括号不匹配。
class Solution {
public:
/**
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
// write code here
stack<char> char_stack;
for(auto& ch: s)
{
if(ch == '(' || ch=='[' || ch=='{')
{
char_stack.push(ch);
}else if(ch == ')')
{
//遍历stack;
bool flag = false;
while(!char_stack.empty())
{
char curr = char_stack.top();
if(curr != '(')
{
char_stack.pop();
}else
{
char_stack.pop();
flag = true;
break;
}
}
if(flag == false)
{
//没有找到'(',返回false;
return false;
}
}
else if(ch == ']')
{
//遍历stack;
bool flag = false;
while(!char_stack.empty())
{
char curr = char_stack.top();
if(curr != '[')
{
char_stack.pop();
}else
{
char_stack.pop();
flag = true;
break;
}
}
if(flag == false)
{
//没有找到'[',返回false;
return false;
}
}
else if(ch == '}')
{
//遍历stack;
bool flag = false;
while(!char_stack.empty())
{
char curr = char_stack.top();
if(curr != '{')
{
char_stack.pop();
}else
{
char_stack.pop();
flag = true;
break;
}
}
if(flag == false)
{
//没有找到'{',返回false;
return false;
}
}
}
return char_stack.empty();
}
};
京公网安备 11010502036488号