leetcode 52: valid parentheses

来源:互联网 发布:聋哑女孩淘宝模特 编辑:程序博客网 时间:2024/04/29 04:13
Valid ParenthesesJan 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;    }}


原创粉丝点击