20. 有效的括号

作者: 花果山松鼠 | 来源:发表于2018-08-08 09:24 被阅读2次

    一、题目原型:

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

    二、题目意思剖析:

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

    三、解题思路:

    解题思路

    核心思想 : 对称,将字符串分为左右两个部分,然后检测对称。
    左边用strings数组保存,保存左括号。右边沿用当前的字符串 是右括号,然后进行对称匹配。一旦检测到不对称,就返回false。一旦检测到对称,就将他们两个消除。进行下一次比对。strings保存方式为栈式保存。

    func isValid(_ s: String) -> Bool {
        var strings: [Character] = []
        for char in s {
            if char == "{" || char == "(" || char == "[" {
                strings .append(char)
            }else {
                if (strings.isEmpty) {
                    return false
                }
                if char == "}" && strings.last != "{" {
                    return false
                }
                if char == ")" && strings.last != "(" {
                    return false
                }
                if char == "]" && strings.last != "[" {
                    return false
                }
                strings .removeLast()
            }
        }
        return strings.isEmpty
    }
    

    四、小结

    总提交数
    提交结果

    有其他好的方法请极速留言,非常乐意一起探讨。😄!

    相关文章

      网友评论

        本文标题:20. 有效的括号

        本文链接:https://www.haomeiwen.com/subject/kbhtbftx.html