每日算法 -【Swift 算法】实现有效括号匹配算法
利用栈结构,匹配括号问题的思路十分清晰,且效率高。Swift 中数组可以很好地模拟栈的行为,使用append入栈,removeLast出栈。掌握这种算法思路,对于解决类似括号匹配、表达式计算等问题非常有帮助。也欢迎留言交流,分享你的解法和思路。
·
🧩 Swift 实现有效括号匹配算法
🧠一、 问题描述
给定一个只包含 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
例如:
"()" -> true
"()[]{}" -> true
"(]" -> false
"([)]" -> false
"{[]}" -> true
🌟二、 思路分析
这道题目是典型的栈(stack)应用题。我们可以用栈来解决:
- 遍历字符串中的每个字符。
- 遇到左括号
(、[、{时,将其入栈。 - 遇到右括号时,检查栈顶元素是否是对应的左括号:
- 如果是,则弹出栈顶继续判断。
- 如果不是,或者栈为空,说明括号不匹配,返回
false。
- 遍历结束后,如果栈为空,说明所有括号匹配,返回
true;否则返回false。
💻三、Swift 实现代码
func isValid(_ s: String) -> Bool {
var stack = [Character]()
let mapping: [Character: Character] = [")": "(", "]": "[", "}": "{"]
for char in s {
if let match = mapping[char] {
// 遇到右括号,检查栈顶是否匹配
if stack.isEmpty || stack.removeLast() != match {
return false
}
} else {
// 左括号入栈
stack.append(char)
}
}
// 栈为空即全部匹配成功
return stack.isEmpty
}
📊四、 测试示例
print(isValid("()")) // true
print(isValid("()[]{}")) // true
print(isValid("(]")) // false
print(isValid("([)]")) // false
print(isValid("{[]}")) // true
✅五、 总结
利用栈结构,匹配括号问题的思路十分清晰,且效率高。
Swift 中数组可以很好地模拟栈的行为,使用 append 入栈,removeLast 出栈。
掌握这种算法思路,对于解决类似括号匹配、表达式计算等问题非常有帮助。
如果你喜欢这篇文章,欢迎点赞和关注!
也欢迎留言交流,分享你的解法和思路。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐



所有评论(0)