题目描述

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

有效字符串需满足:

示例1:

输入: "()"
输出: true

示例2:

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

示例3:

输入: "(]"
输出: false

示例4:

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

方案一:使用栈

// 如果是右括号,将其与栈顶字符串匹配
func isValid(_ s: String) -> Bool {
    var cArr = [Character]()
    for c in s {
        switch c {
        case "{","[","(":
            cArr.append(c)
        case "}":
            if cArr.isEmpty == true || cArr.removeLast() != "{" {
                return false
            }
        case "]":
            if cArr.isEmpty == true || cArr.removeLast() != "[" {
                return false
            }
        case ")":
            if cArr.isEmpty == true || cArr.removeLast() != "(" {
                return false
            }
        default: break
        }
    }
    return cArr.isEmpty
}

注意cArr.removeLast() == cArr.last && cArrRemoveLast