用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()
}
}