Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
easy的题目,相对来说比较简答,主要思想是利用栈来解决:
1. 左括号入栈,右括号与栈顶左括号比较,不相符即报错,相符将栈顶弹出;
2. 同时注意栈空否的状态
class Solution {
public:
bool isValid(string s) {
int len= s.length();
if(len% 2== 1) return false;
stack <char> vp;
for(int i= 0; i< len; i++){
if(s[i]=='(' || s[i]=='{' || s[i]=='['){
vp.push(s[i]);
}
else if(s[i]== ')'){
if(vp.empty()) return false;
if(vp.top()== '('){
vp.pop();
}
else{
return false;
}
}
else if(s[i]== '}'){
if(vp.empty()) return false;
if(vp.top()== '{'){
vp.pop();
}
else{
return false;
}
}
else if(s[i]== ']'){
if(vp.empty()) return false;
if(vp.top()== '['){
vp.pop();
}
else{
return false;
}
}
}
if(!vp.empty()) return false;
return true;
}
};