zoukankan      html  css  js  c++  java
  • 有效的括号

    题目信息

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。   
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。
    示例 1:
        输入: "()"
        输出: true
    示例 2:
        输入: "()[]{}"
        输出: true
    示例 3:
        输入: "(]"
        输出: false
    示例 4:
        输入: "([)]"
        输出: false
    示例 5:
        输入: "{[]}"
        输出: true

    解题思路

    这道题目是判断是否是有效的括号,也就是说在这个规则下所有的括号能不能匹配到一块。
    如果是括号的左边部分,直接加入到数组中,如果是括号的右边部分判断是否与数组的前一
    个为一对。如果不是一对直接返回false,直至把该字符串遍历结束。判断数组是否为空

    代码

    func isValid(_ s: String) -> Bool {
        func isPair(_ a: Character, _ b: Character) -> Bool {
            return ((a == "[" && b == "]") || (a == "{" && b == "}") || (a == "(" && b == ")"));
        }
        enum Direction {
            case left
            case right
            static func getDirection(_ char: Character) -> Direction {
                switch char {
                case "(", "{", "[":
                    return left;
                default:
                    return right;
                }
            }
        }
        
        var unpaired: [Character] = []
        for char in s {
            let direction = Direction.getDirection(char)
            switch direction {
            case .left:
                unpaired.append(char)
            case .right:
                if !isPair(unpaired.last ?? " ", char) {
                    return false
                } else {
                    unpaired.removeLast(1)
                }
            }
        }
        return unpaired.isEmpty
    
    }

    题目链接

  • 相关阅读:
    09、AppBarControl
    15、ScrollViewerSample
    11、DataBinding
    18、Compression
    关于创建oracle dblink 过程的几点心得吧
    教你如何玩转DK血
    DK需要知道的事
    Displaying Dynamic KML with ASP.NET
    WLK:裁缝/附魔350450速冲攻略
    WLK狂暴,防御战士的一点心得.
  • 原文地址:https://www.cnblogs.com/muzichenyu/p/12778058.html
Copyright © 2011-2022 走看看