題目連結: https://leetcode.com/problems/valid-parentheses/
// Time complexity: O(n) , n is the length of string
func isValid(_ s: String) -> Bool {
let pair: [Character: Character] = [")": "(",
"}": "{",
"]": "["]
var stack: [Character] = []
for c in s {
if pair.values.contains(c) {
stack.append(c)
} else if pair[c] == stack.last {
stack.removeLast()
} else {
return false
}
}
return stack.isEmpty
}
assert(isValid(""), "Error 1")
assert(!isValid("(("), "Error 2")
assert(!isValid("}}"), "Error 3")
assert(isValid("()"), "Error 4")
assert(!isValid("())"), "Error 5")