本文介绍: 题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s判断字符串是否有效有效字符串需满足:1. 左括号必须用相同类型的右括号闭合。2. 左括号必须以正确顺序闭合。算法实现func isValid(_ s: String) -> Bool { let pairMap = [“(“: “)”, “{“: “}”, “[“: “]”] as [Character: Character] var stack = [Cha

题目

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

有效字符串需满足:

1. 左括号必须用相同类型的右括号闭合。
2. 左括号必须以正确顺序闭合。

算法实现

func isValid(_ s: String) -> Bool {
        let pairMap = ["(": ")", "{": "}", "[": "]"] as [Character: Character]
        var stack = [Character]()
        for character in s {
            // is a key
            if pairMap.keys.contains(character) {
                stack.append(character)
            } else {
                // is a value
                guard let key = stack.last else {
                    return false
                }
                if pairMap[key] == character {
                    stack.popLast()
                } else {
                    return false
                }
            }
        }
        return stack.isEmpty
    }

注意点

  1. Swift中Character类型
  2. as关键字的运用;

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注