• LeetCode有效的括号Swift


    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

    有效字符串需满足:

    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。

    示例 1:

    输入: "()"
    输出: true


    示例 2:

    输入: "()[]{}"
    输出: true


    示例 3:

    输入: "(]"
    输出: false


    示例 4:

    输入: "([)]"
    输出: false


    示例 5:

    输入: "{[]}"
    输出: true

    思路:

    利用栈结构先进后出的原理

    1.将数据源用dic存储, key为左括号 value为右括号

    2.创建一个记录左括号的栈数组flag

    3.遍历字符串

    如果当前字符满足在dic的keys中,证明是左括号,

    将元素入栈,压入数组flag中

    如果不存在 ,证明是右括号,

    如果当前字符等于栈顶元素,将栈顶元素出栈,移除数组中的最后一个元素,进入下一个循环

    如果当前字符不等于栈顶元素 也就是说,无法闭合之前的括号,则字符串不成立 return false

    最后只需要判断栈数组flag是不是为空即可,也就是说字符串是不是全部完整闭合

    class Solution {
        func isValid(_ s: String) -> Bool {
            let dic : [Character: Character] = ["{":"}", "[":"]", "(":")"]
            var flag: [Character] = []
            for char in s {
                if dic.keys.contains(char) {
                    //遇到左括号,将与之匹配的右括号入栈
                    flag.append(dic[char]!)
                } else {
                    //遇到右括号
                    if flag.last == char {
                        //遇到的右括号与栈顶字母相同,就出栈
                        flag.removeLast()
                    } else {
                        return false
                    }
                }
            }
            //栈为空正好匹配,或者s为空字符串
            return flag.count == 0
        }
    }
  • 相关阅读:
    转载:PHP JSON_ENCODE 不编码中文汉字的方法
    【TP3.2】:日志记录和查看
    PHP原生:分享一个轻量级的缓存类=>cache.php
    python: 基本的日期与时间转换
    python: 随机选择
    计算机bit是什么意思
    Python: 矩阵与线性代数运算
    Python numpy 安装以及处理报错 is not a supported wheel on this platform
    Python: 大型数组运算
    Python numpy有什么用?
  • 原文地址:https://www.cnblogs.com/huangzs/p/13731244.html
Copyright © 2020-2023  润新知