给定一个字符串 str,设计一个算法采用顺序栈判断 str 是否是满足形如“序列 1@ 序 列 2”的字符串,其中“序列 2”为“序列 1”的逆序, str 中仅存在 1 个 @ 符号。
时间: 2024-03-09 15:47:48 浏览: 91
编写算法,利用栈判断所给字符串是否具有中心对称关系(回文).doc
好的,我可以帮你解决这个问题。
首先,我们可以使用一个栈来实现这个算法。我们可以将 @ 符号前面的字符依次入栈,然后再将 @ 符号后面的字符依次出栈并与栈中的元素比较,如果相同则继续比较,否则返回 False。
具体实现可以参考下面的代码:
```python
def is_valid_string(s):
stack = []
for c in s[:s.index('@')]:
stack.append(c)
for c in s[s.index('@') + 1:][::-1]:
if not stack or c != stack.pop():
return False
return True
```
其中,s.index('@') 表示找到 @ 符号的位置,[::-1] 表示将字符串反转。
测试样例:
```python
assert is_valid_string('abc@cba') == True
assert is_valid_string('hello@olleh') == True
assert is_valid_string('123@321') == True
assert is_valid_string('ab@ba') == True
assert is_valid_string('abc@def') == False
assert is_valid_string('abc@cbad') == False
```
希望能帮到你!
阅读全文