这题是典型的栈的运用。
思路如下:
如果是左的括号就压栈
如果是右的括号,就需要和栈顶进行配对,如果配对成功,直接弹出栈顶且忽略这个右括号的压栈,否则直接压栈
如果最后栈不是空的,就说明不是正确的序列,否则就说明是正确的
代码如下所示:
class Solution {
public:
/**
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
// write code here
if(s.length()==0) return true;
stack<char> st;
int size=s.length();
for(int i=0;i<size;++i){
if(s[i]=='('||s[i]=='['||s[i]=='{'){
st.push(s[i]);
}else{
if(st.empty()) return false;
char top=st.top();
if(s[i]==')'&& top=='('){
st.pop();
}else if(s[i]==']' && top=='['){
st.pop();
}else if(s[i]=='}' && top=='{'){
st.pop();
}else{
st.push(s[i]);
}
}
}
return st.empty();
}
};