LeetCode Swift解题记录(20)有效的括号

    科技2024-12-22  10

    LeetCode Swift解题记录(20)有效的括号

    题干解析

    给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入:"([)]" 输出: false 示例 5: 输入: “{[]}” 输出: true

    个人解题:

    无解

    思路心得: *自己的思路是根据括号字符串包含来判断,思路一直解决不了

    推荐解法:

    class Solution { func isValid(_ s: String) -> Bool { if s.count == 0 { return false } var stack = [String]() let dict: [String:String] = ["(":")","[":"]","{":"}"] for c in s { print("ccc",c.description) if dict.keys.contains(c.description) { stack.append(c.description) //如果是左括号就入栈 }else { if stack.count > 0 && c.description == dict[stack.last!] { //如果是右括号,并且匹配就出栈 stack.removeLast() }else { return false } } } return stack.count == 0 } }

    推荐评价: 根据入栈出栈原理,感觉非常精妙

    Processed: 0.029, SQL: 8