本专栏单纯记录自己刷题过程,便于后续重复刷题更新迭代自己对于同一道题的认知和方法。有好的刷题方法和思路,可以评论区交流,感谢~
1.利用栈思想解决该问题
stack<char> left; // 栈定义
left.push(c); // 栈增加
left.pop(); // 栈删除
left.empty() // 栈是否为空
left.top() // 栈顶部元素
2.c/c++中双引号和单引号区别
单引号一个字符;双引号字符长度+1。
class Solution {
public:
bool isValid(string s) {
stack<char> left; // 栈定义
for (char c : s)
{
if (c == '(' || c == '{' || c == '[')
{
left.push(c); // 栈增加
}
else
{
if (!left.empty() && leftOf(c) == left.top()) // 栈是否为空;栈顶部元素
{
left.pop(); // 栈删除
}
else
{
return false;
}
}
}
return left.empty();
}
char leftOf(char c)
{
if (c == ')')
return '(';
if (c == '}')
return '{';
return ']';
}
};