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.
思路:维护一个栈。每次把左括号放入栈,检查放入右括号时最上面的左括号是否与之对应,如果对应则弹出左括号,最后如果还有剩下的左括号没有右括号匹配,则无效。
class Solution {
public:
bool isValid(string s) {
int len=s.length();
stack<char>brackets;
for(int i=0;i<len;i++){
if(s[i]=='('||s[i]=='{'||s[i]=='[') brackets.push(s[i]);
else{
if(brackets.empty()) return false;
if(s[i]==')'&&brackets.top()!='(')
return false;
if(s[i]=='}'&&brackets.top()!='{')
return false;
if(s[i]==']'&&brackets.top()!='[')
return false;
brackets.pop();
}
}
if(brackets.size()>0) return false;
return true;
}
};