• [LeetCode] 20. Valid Parentheses ☆


    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.

    解法:

      采用栈方法,遍历字符串,对于每个字符:

    • 如果属于"{[("之一,压入栈中。
    • 如果属于")]}"之一,此时若栈为空(容易忽略),或者栈顶字符与其不匹配,返回false。

      遍历结束后,如果栈为空,返回true;否则返回false。

    public class Solution {
        public boolean isValid(String s) {
            Stack<Character> stack = new Stack<>();
            for (int i = 0; i < s.length(); i++) {
                if ("{[(".contains(s.substring(i, i + 1))) {
                    stack.push(s.charAt(i));
                } else if (")]}".contains(s.substring(i, i + 1))) {
                    if (stack.empty() || !match(stack.pop(), s.charAt(i))) {
                        return false;
                    }
                } else {
                    return false;
                }
            }
            return stack.empty();
        }
        
        public boolean match(char c1, char c2) {
            return (c1 == '(' && c2 == ')') || (c1 == '[' && c2 == ']') 
                || (c1 == '{' && c2 == '}');
        }
    }
  • 相关阅读:
    冒泡排序
    Objective-C 命名规范
    时间轴的制作
    CocoaPods 哪些事
    消息转发机制入门篇
    架构
    算法学习
    AutoLayout自动布局
    网络学习
    HDU 3832 Earth Hour (最短路)
  • 原文地址:https://www.cnblogs.com/strugglion/p/6413678.html
Copyright © 2020-2023  润新知