从键盘输入一串字符,利用现在给出的栈和队列的基本操作,判断该字符串是否回文串,如果是回文串,则函数返回OK;否则,返回ERROR。并写出代码
时间: 2024-10-21 22:01:50 浏览: 20
栈和队列的基本操作实现及其应用
为了判断一个字符串是否是回文串,我们可以采用双指针的方法,一个指向字符串的开始位置(用栈顶元素表示),另一个指向结束位置(用队首元素表示)。同时将每个字符依次压入栈中,然后弹出并与当前队首元素比较,如果匹配则继续移动指针,如果不匹配则返回"ERROR"。当两个指针相遇或者交叉时,说明已经检查完一半的字符,如果都匹配,则是回文串,返回"OK"。
这里是一个简单的Python代码示例:
```python
def is_palindrome(s):
stack = []
queue = collections.deque() # 使用deque作为队列
for char in s:
stack.append(char) # 将字符压入栈
queue.append(char) # 将字符加入队列
while len(stack) > 0 and len(queue) > 1: # 只要栈不空且队列里有不止一个元素
if stack.pop() != queue.popleft(): # 比较栈顶和队首元素
return "ERROR"
if not len(stack): # 如果栈为空(即指针相遇)
return "OK"
# 示例
s = input("请输入字符串:")
result = is_palindrome(s)
print(result)
```
阅读全文