美文网首页
用Swift刷算法之有效的括号

用Swift刷算法之有效的括号

作者: 哇哦萌芽技术团队 | 来源:发表于2022-11-01 10:49 被阅读0次

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

    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    每个右括号都有一个对应的相同类型的左括号。

    以下是代码实现:

    func isValid(_ s: String) -> Bool {
       if s.count % 2 != 0 {return false}
       let leftStrs = "([{"
       let pairs = ["(" : ")", "{" : "}", "[" : "]"]
       
       let stack = Stack<Character>()
       
       for character in s {
           
           if leftStrs.contains(character) {
               
               stack.push(character)
               
           }else {
               
               if stack.isEmpty() {return false}
               let c = stack.pop()
               if pairs[String(c)] != String(character) {return false}
               
           }
        
       }
       return stack.isEmpty()
    }
    

    附:用数组模拟实现栈的Stack类

    class Stack<E> {
        
        var elements = [E]()
        
        func push(_ element: E) {
            elements.append(element)
        }
        
        func pop() -> E {
            return elements.removeLast()
        }
        
        func peek() -> E? {
            return elements.last
        }
        
        func size() -> Int {
            return elements.count
        }
        
        func isEmpty() -> Bool {
            
            return elements.count == 0
        }
        
        func clear() {
            elements.removeAll()
        }
        
        
    }
    

    相关文章

      网友评论

          本文标题:用Swift刷算法之有效的括号

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