2.给定一个字符串str,设计一个算法采用顺序栈判断str是否为形如“序列1@序列2”的合法字符串,其中序列2是序列1的逆序,在str中恰好只有一个@字符。
时间: 2024-06-12 15:10:48 浏览: 136
识别一次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字 符序列。其中序列1 和序列2 中都不含字符‘&’,且序列2 是序列1 的逆序列。
4星 · 用户满意度95%
好的,我的回答如下:
可以使用一个顺序栈来判断字符串是否为合法字符串。具体做法是:从字符串的左端开始扫描,遇到@字符时,将@字符之前的子串压入栈中;接着继续扫描,将@字符之后的子串与栈顶元素比较,如果相等,则弹出栈顶元素,继续扫描;如果不相等,则说明字符串不合法。
以下是具体实现的代码:
```python
def is_valid_string(s):
stack = []
i = 0
while i < len(s):
if s[i] == '@':
i += 1
break
stack.append(s[i])
i += 1
while i < len(s):
if not stack:
return False
if s[i] != stack[-1]:
return False
stack.pop()
i += 1
return not stack and i == len(s)
```
阅读全文