请使用栈结构,写一算法检验某表达式中的括号是否匹配,并测试你的算法是否正确
时间: 2024-05-11 15:13:42 浏览: 12
算法思路:
1. 遍历表达式中的每个字符,如果是左括号,就将其压入栈中;
2. 如果是右括号,就将栈顶元素弹出,判断是否与当前右括号匹配,如果匹配,则继续遍历;如果不匹配,说明括号不匹配,返回 false;
3. 遍历结束后,如果栈为空,说明括号匹配,返回 true;否则,说明还有左括号未被匹配,返回 false。
代码实现:
```python
def check_parenthesis(expression):
stack = []
for c in expression:
if c == '(':
stack.append(c)
elif c == ')':
if len(stack) == 0 or stack.pop() != '(':
return False
return len(stack) == 0
# 测试算法
print(check_parenthesis('()')) # True
print(check_parenthesis('(()())')) # True
print(check_parenthesis('(()()')) # False
print(check_parenthesis(')(')) # False
print(check_parenthesis('((())')) # False
print(check_parenthesis(')')) # False
print(check_parenthesis('(')) # False
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)