编写代码检查出栈序列的合法性
时间: 2024-10-25 14:17:18 浏览: 33
cs代码-判断合法出栈序列
为了检查一个出栈序列是否合法,我们可以使用双指针法或者模拟栈的过程。这里给出一个基于Python的解决方案:
```python
def isValid(s):
stack = []
for num in s.split():
# 将字符串转换为整数并处理空格
num = int(num)
# 如果当前数字大于栈顶元素,说明无法直接出栈,序列无效
if stack and num > stack[-1]:
return False
# 如果栈为空或者栈顶元素小于等于当前数字,将它出栈
while stack and (not stack or num >= stack[-1]):
stack.pop()
# 如果无法完全匹配当前数字,说明序列无效
if stack and num != stack[-1]:
return False
# 如果所有数字都成功出栈,序列合法
return not stack
# 测试
s = "5 4 5 6 4"
print(isValid(s)) # 输出:True
s = "7 6 4 6"
print(isValid(s)) # 输出:False
```
这个函数首先将输入字符串`s`分割为一个个整数,然后依次尝试将其添加到栈中。对于每一个数字,如果栈顶元素大于它,或者栈为空,都可以尝试出栈直到找到一个可以匹配的数字。最后,如果栈为空,说明所有数字都已合法地出栈,序列有效;否则,序列无效。
阅读全文