Valid Parentheses
Jan 30 '12
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:
# @return a boolean
def isleft(self, c):
return c=='(' or c=='{' or c=='['
def ispair(self, l, r):
if l=='(': return r==')'
elif l=='[': return r==']'
elif l=='{': return r=='}'
else: return False
def isValid(self, s):
stack = []
for c in s:
if self.isleft(c) :
stack.append(c)
elif not stack: return False
elif self.ispair(stack[-1], c): stack.pop()
else: return False
return not stack
class Solution {
public:
bool isValid(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
stack<char> myStack;
char c;
for( int i=0; i<s.size(); i++) {
if( s[i] == '(' || s[i] == '[' || s[i] == '{') {
myStack.push( s[i] );
} else if( myStack.empty() ) {
return false;
} else if( s[i] == ')') {
c = myStack.top();
if( c!= '(' ) return false;
else myStack.pop();
} else if( s[i] == ']') {
c = myStack.top();
if( c!= '[' ) return false;
else myStack.pop();
} else if( s[i] == '}') {
c = myStack.top();
if( c!= '{' ) return false;
else myStack.pop();
} else {
return false;
}
}
return myStack.empty();
}
};
public class Solution {
//null, "", "(){}[]" "({[]})" "(({}]"
public boolean isValid(String s) {
// Start typing your Java solution below
// DO NOT write main() function
if(s==null || s.length()==0) return true;
Stack<Character> stack = new Stack<Character>();
for(int i=0; i<s.length(); i++) {
char c = s.charAt(i);
if(c=='(' || c=='{' || c=='[' ) {
stack.push(c);
} else if(stack.isEmpty() ){
return false;
} else {
boolean r = isValid(stack.peek(), c);
if(r) {
stack.pop();
} else {
return false;
}
}
}
return stack.isEmpty();
}
private boolean isValid(char l, char r) {
if(l=='(') return r==')';
if(l=='[') return r==']';
if(l=='{') return r=='}';
return false;
}
}