【LeetCode20】【Valid Parentheses】

来源:互联网 发布:路亚竿能钓什么鱼 知乎 编辑:程序博客网 时间:2024/05/31 19:47

题目:

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.

就是说要判断内容为”{“,”}”,”[“,”]”,”(“,”)”的字符串,是否一一对应,有开始有结束。

代码

1.个人思路

/**我优化几遍后的代码     * 最短用时:8ms     * beats:93.67%     */    public boolean isValid1(String s) {        if(s.length()%2!=0||s.length()==0){return false;}           Stack<Character> stack = new Stack<Character>();        for(char c:s.toCharArray()){            if(c=='('||c=='{'||c=='['){stack.push(c);}                              else if(stack.isEmpty()){return false;}                     else if(c==']'){if(stack.peek()!='['){return false;}stack.pop();}                                           else if(c==')'){if(stack.peek()!='('){return false;}stack.pop();}                                           else if(c=='}'){if(stack.peek()!='{'){return false;}stack.pop();}                                       }                           return stack.isEmpty();    }

2.网上大神思路

/**     * 网上大神思路     * 用时:10ms     * beats:65.31%     */     public boolean isValid2(String s){        Stack<Character> stack = new Stack<Character>();        for(char c:s.toCharArray()){            if(c=='('){stack.push(')');}            else if(c=='{'){stack.push('}');}            else if(c=='['){stack.push(']');}            else if(stack.isEmpty()||stack.pop()!=c){return false;}        }        return stack.isEmpty();    }
0 0
原创粉丝点击