美文网首页
IOS 算法(基础篇) ----- 有效的括号

IOS 算法(基础篇) ----- 有效的括号

作者: ShawnAlex | 来源:发表于2020-11-24 11:49 被阅读0次

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

有效字符串需满足:

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

**例如: **

输入: "()"
输出: true

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

输入: "(]"
输出: false

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

栈方法

使用「栈」这一数据结构来解决。

1.首先有效括号一定是相同类型左右闭合, 即偶数, 所以奇数先排除
2.for循环判断, 左括号依次入栈
3.由于括号需要相同类型闭合, 所以依次判断右括号是否栈顶依次配对, 配对出栈, 不匹配弹出返回false
4.循环结束判断栈中元素是否为0

    func isValid(_ s: String) -> Bool {
        if s.count % 2 != 0 {
            return false
        }
        
        var temp: [Character] = []
        
        for i in s {
            switch i {
            case "(", "[", "{":
                temp.append(i)
            case ")":
                if temp.last != "(" {
                    return false
                }
                temp.removeLast()
            case "]":
                if temp.last != "[" {
                    return false
                }
                temp.removeLast()
            case "}":
                if temp.last != "{" {
                    return false
                }
                temp.removeLast()
            default:
              break
            }
            
        }
        
        if temp.count != 0 {
            return false
        }

        return true
    }

题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址

相关文章

网友评论

      本文标题:IOS 算法(基础篇) ----- 有效的括号

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