使用堆栈,逐个读取字符,当读取字符为左括号"(","[","{"时,将其压入栈堆,当为右括号时,弹出栈尾元素与其对比,若匹配则继续操作下一元素,否则return false。当全部元素操作完毕,存左括号元素的栈为空,则说明括号正确匹配。
public:
bool isValid(string s) {
int s_size=s.size();
vector<char> left;
for(int i=0;i<s_size;i++)
{
if(s[i] == '('|| s[i] == '{' || s[i] == '[')
{
left.push_back(s[i]);
}
else
{
if(left.empty()) return false;
auto it=left.end()-1;
char s2=*(it);
if(s[i] == ')' && s2 != '(') return false;
if(s[i] == '}' && s2 != '{') return false;
if(s[i] == ']' && s2 != '[') return false;
left.pop_back();
}
}
return left.empty();
}