用Swift刷算法之有效的括号

2022-11-01  本文已影响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()
    }
    
    
}
上一篇下一篇

猜你喜欢

热点阅读