• 有效的括号


    题目信息

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。   
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。
    示例 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
    
    }

    题目链接

  • 相关阅读:
    flex自适应小例子
    hasOwnProperty 递归 简单回调 链式调用
    H5音频和视频
    html特殊字符
    css巧妙实现分隔线
    SQL Server中数据的存储
    SQL高级查询
    SQL SERVER查询到的数据转为Json格式
    SQL动态生成列
    SQL合并查询数据,以逗号分隔
  • 原文地址:https://www.cnblogs.com/muzichenyu/p/12778058.html
Copyright © 2020-2023  润新知