#include
#include
using namespace std;
class Solution {
public:
bool isValid(string s) {
stackprocess;//使用c++STL创建栈
if(!process.empty())//判断开始栈是否为空
return false;
process.push('a');//入栈一个与括号不相关的字符,前提字符一定比括号们大很多
process.push(s[0]);//入栈s中第一个元素
for(int i = 1; s[i]; i++)//循环到s中最后一个元素但不等于'\0'
{
if(s[i] - process.top() < 3 && s[i] - process.top() > 0)//如果s中元素和栈中元素相差在<3和>0之间就是对应括号
{
process.pop();//将栈顶出栈
}
else if(process.empty() && s[i] != '\0')//如果栈在循环内空了,直接入栈当前s[i]跳出此次循环
{
process.push(s[i]);//入栈当前元素
continue;//跳出此次循环
}
else
{
process.push(s[i]);//如果和站顶元素不匹配的直接入栈
}
}
if(process.size() == 1)//如果栈就剩下一个元素'a'那么就是匹配的
return true;
else//如果栈还剩除了'a'以外的其他元素,那么不匹配
return false;
}
};
int main()
{
Solution so;
string s;
cin >> s;
cout << so.isValid(s) << endl;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)