Swift 有效的括号 - LeetCode

作者: 韦弦Zhy | 来源:发表于2018-10-08 21:41 被阅读1次
LeetCode

题目: 有效的括号

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

有效字符串需满足:

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

示例1:

输入: "()"
输出: true

示例2:

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

示例3:

输入: "(]"
输出: false

示例4:

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

示例5:

输入: "{[]}"
输出: true
方案一:

1、循环字符串,将左括号压栈
2、如果是右括号,将其与栈顶字符串匹配
3、因为没有除了括号的其他字符,所以最终栈内为空

代码一:

func isValid(_ s: String) -> Bool {
        var cArr = [Character]()
        for c in s {
            switch c {
            case "{","[","(":
                cArr.append(c)
            case "}":
                guard (!cArr.isEmpty && cArr.removeLast() == "{") else {
                    return false
                }
            case "]":
                guard (!cArr.isEmpty && cArr.removeLast() == "[") else {
                    return false
                }
            case ")":
                guard (!cArr.isEmpty && cArr.removeLast() == "(") else {
                    return false
                }
            default: break
            }
        }
        return cArr.isEmpty
    }
执行用时:20ms

开始的判断如下,上面优化只是减少了代码量

//最开始判断 1
if let last = cArr.last {
    if last == "(" {
        cArr.removeLast()
    } else {
        return false
    }
} else {
    return false
}

//最开始判断 2
if let last = cArr.removeLast() {
    if last != "(" {
        return false
    }
} else {
    return false
}

当然也可以不使用Switch case 直接 if else

用Swift开始学习算法中,在LeetCode中开始做初级算法这一章节,将做的题目在此做个笔记,希望有更好方法同学们cue我哦。

相关文章

  • Swift 有效的括号 - LeetCode

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

  • PHP之高频考点算法合辑

    有效括号 LC: Valid Parentheses - LeetCode[https://leetcode.co...

  • 有效括号 Click here for leetcode details[https://leetcode-cn....

  • LeetCode20. 有效的括号(Swift)

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

  • LeetCode 32. 最长有效括号 | Python

    32. 最长有效括号 题目来源:力扣(LeetCode)https://leetcode-cn.com/probl...

  • leetcode 有效的括号

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

  • leetcode: 有效的括号

    题目 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/val...

  • LeetCode | 有效的括号

    在记事本中写算法题和在纸上写其实感觉差不多,反正是不能进行调试。想起某高手的话,写代码要做到“人机合一”,写高级语...

  • LeetCode——有效的括号

    题目描述 一、CPP 栈 解题思路:这个问题经典的解法就是使用栈,当遇到左括号就入栈,遇到右括号就与栈顶的元素进行...

  • 有效括号-Swift

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

网友评论

    本文标题:Swift 有效的括号 - LeetCode

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