目录
一,题目描述
二,题目分析
1,如果为空,true
2,如果是奇数个,false
3,用到栈结构,如果是左括号,入栈。如果是右括号,判断栈顶是不是相对应的左括号,是->栈顶出栈,不是->false;
最后再判断栈是否为空,空->true,不空->false
三,代码
class Solution {
public:
bool isValid(string s) {
if (s.size() == 0)
{
return true;
}
if (s.size() % 2 != 0)
{
return false;
}
stack<char> symbols;
for (int i = 0; i < s.size(); i++){
if (s[i] == '(' || s[i] == '[' || s[i] == '{')
symbols.push(s[i]);
else{
if (symbols.size() == 0)
return false;
char match;
if (s[i] == ')')
match = '(';
else if (s[i] == ']')
match = '[';
else if (s[i] == '}')
match = '{';
char c = symbols.top();
symbols.pop();
if (c != match)
return false;
}
}
if (symbols.size() != 0)
return false;
return true;
}
};