括号匹配问题
括号匹配问题是指在一个字符串中,检查括号是否成对出现且正确匹配,常见的括号包括圆括号(())、方括号([])和花括号({}),在这个问题中,我们需要确保每个左括号都有一个对应的右括号,并且括号的顺序是正确的。
括号匹配算法
1、使用栈数据结构
我们可以使用栈来解决这个问题,遍历输入字符串,遇到左括号时将其压入栈中,遇到右括号时检查栈顶元素是否为对应的左括号,如果是则弹出栈顶元素,否则返回不匹配,如果栈为空,则括号匹配,否则不匹配。
2、使用计数器
我们还可以使用计数器来解决这个问题,遍历输入字符串,遇到左括号时将计数器加1,遇到右括号时将计数器减1,如果在任何时候计数器为负数,说明括号不匹配,如果计数器为0,则括号匹配,否则不匹配。
示例代码(Python)
def is_brackets_matched(s: str) > bool: stack = [] brackets_map = {')': '(', ']': '[', '}': '{'} for char in s: if char in brackets_map.values(): stack.append(char) elif char in brackets_map.keys(): if not stack or stack.pop() != brackets_map[char]: return False return not stack
测试用例
1、输入:"()[]{}"
,输出:True
2、输入:"([)]"
,输出:False
3、输入:"{[()]}"
,输出:True
4、输入:"{[(])}"
,输出:False
下面是一个简单的介绍,展示了括号匹配的例子:
序号 | 左括号 | 右括号 | 匹配结果 |
1 | ( | ) | 成功 |
2 | [ | ] | 成功 |
3 | { | } | 成功 |
4 | ( | } | 失败 |
5 | [ | ) | 失败 |
6 | { | ] | 失败 |
7 | ( | [ | 失败 |
8 | { | ( | 失败 |
9 | ) | ] | 失败 |
在这个介绍中,左括号和右括号必须是一对正确的括号类型才能匹配成功,左括号"("必须与右括号")"匹配,左括号"["必须与右括号"]"匹配,左括号"{"必须与右括号"}"匹配,不正确的括号配对会导致匹配失败。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/689764.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复