#include <iostream>
#include <string>
#include <stack>
#include <cmath>
using namespace std;
class Solution {
public:
bool isValid(string s) {
stack <char>parenStack;
char tmp ;
for(int i = 0;i<s.size(); i++){
//cout<<s[i]<<" ";
if(s[i] == '(' ||s[i]=='{'||s[i]=='[')
parenStack.push(s[i]);
else if(s[i] == ')'||s[i]=='}'||s[i]==']')
{
if(parenStack.empty())
return false;
tmp = parenStack.top();
parenStack.pop();
if(abs(s[i] - tmp)>2)
return false;
}
else
continue;
}
if(parenStack.empty())
return true;
return false;
}
};
int main()
{
Solution solution;
string s = "[";
cout<<solution.isValid(s);
return 0;
}
小结
注意,扫完一遍后,栈内必须为空
本文介绍了一种使用栈数据结构实现的括号匹配验证算法,该算法能够判断字符串中的括号是否正确配对。通过遍历字符串并利用栈进行括号的压入和弹出操作,确保所有括号正确闭合且顺序正确。最后,若栈为空则说明括号匹配成功。
927

被折叠的 条评论
为什么被折叠?



