在一个用字符串描述的表达式“([(a+b)]/f+(ctd)”中存在大、中、小括号。请编写一组程序,基于栈,实现对输入的一串字符串的依次扫描,并检查括号匹配是否成功 (1)输入样例:(0)0(hllo)((worla)())) 输出样例:括号匹配成功 (2)输入样例:(0X)(helllo)(worla)()) 输出样例:括号匹配失败
时间: 2023-07-16 19:14:44 浏览: 102
以下是基于栈的括号匹配检查的代码实现(使用 Python 语言):
```python
def check_brackets(string):
stack = []
for char in string:
if char in ["(", "[", "{"]:
stack.append(char)
elif char in [")", "]", "}"]:
if len(stack) == 0:
return False
top = stack.pop()
if (top == "(" and char != ")") or \
(top == "[" and char != "]") or \
(top == "{" and char != "}"):
return False
return len(stack) == 0
# 测试样例
print(check_brackets("(0)0(hllo)((worla)()))")) # 括号匹配成功
print(check_brackets("(0X)(helllo)(worla)())")) # 括号匹配失败
```
该代码使用一个栈来保存已经扫描过的左括号,当遇到右括号时,弹出栈顶元素并检查是否匹配。如果扫描完整个字符串后,栈中还有剩余元素,则说明括号不匹配。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)