回文判断用一个栈和一个队列对比实现代码
时间: 2024-10-20 21:19:18 浏览: 37
回文判断是指一个字符串从前往后读和从后往前读是一样的,即正序和反序一致。用栈和队列分别来实现这个功能,其实是一种常见的面试题挑战。下面是基本思路:
**使用栈实现**:
1. 遍历字符串的一半,依次压入栈中。
2. 再次遍历剩余的一半,从栈顶弹出元素并与当前字符比较,如果不同,则不是回文;全部匹配则为回文。
```python
def is_palindrome(s):
stack = list()
for i in range(len(s) // 2):
stack.append(s[i])
for j in range(len(s) - 1, len(s) // 2, -1):
if s[j] != stack.pop():
return False
return True
```
**使用队列实现**:
1. 双端队列deque(在Python的collections模块中)会自动在两端添加和删除元素,所以可以直接将字符串的一半加入队列。
2. 从队列另一端开始取出元素并与当前字符比较,如果不同,则不是回文;全部匹配则为回文。
```python
from collections import deque
def is_palindrome(s):
queue = deque(s[:len(s) // 2])
queue.reverse() # 将队列反转
for i in range(len(s) // 2):
if s[i] != queue.popleft():
return False
return True
```
阅读全文