class Solution
{
public:
bool isValid(string s)
{
if(s.length()%2 != 0) return false;//如果符号不是成对出现,那肯定不是有效括号
stack<char>stk;//创建栈 符号匹配问题一般要用栈
for(int i = 0;i <s.length();i++)
{
if(s[i] == '(' || s[i] == '[' || s[i] == '{')//判断是否是左括号,是就压入栈
{
stk.push(s[i]);
}
//那就是右括号
else
{
if(stk.empty()) return false;//栈为空情况,则没有匹配的
if(s[i] == ')' && stk.top() == '(' ||//栈不为空情况
s[i] == ']' && stk.top() == '[' ||
s[i] == '}' && stk.top() == '{' )
{
stk.pop();//出栈
}
else return false;
}
}
return stk.empty();//所有遍历完,判断如果最后出完栈,则说明为有效括号,会返回true
}
};
Leecode热题100第20题,有效的括号。Day03.
最新推荐文章于 2025-04-23 21:42:35 发布