可以使用栈这一数据结构来解决
在遇到一个左括号的时候可以先把它放入栈中,当遇到一个右括号时,从栈顶取出左括号,若不能匹配则字符串s无效。
可以先对字符串的长度进行判断,当s.length()为奇数时,直接返回false,节省程序判断的时间。
class Solution{
public:
bool isValid(string s){
int n=s.size();
if(n%2==1){
return false;
}
unordered_map<char,char>pairs={
{')','('},
{']','['},
{'}','{'}
};
stack<char>stk;
for(char ch:s){
if(pairs.count(ch)){
if(stk.empty()||stk.top()!=pairs[ch])
return false;
stk.pop();
}
else{
stk.push(ch);
}
}
return stk.empty();
}
};