用顺序栈的方式写回文
时间: 2024-10-16 21:08:53 浏览: 18
java模拟顺序栈实现回文串的判断
5星 · 资源好评率100%
在Python中,我们可以使用顺序栈(也称为数组栈)来判断一个字符串是否为回文。回文是指正读反读都一样的字符串,例如"level"和"madam"。
以下是使用顺序栈实现回文检查的基本步骤:
1. 初始化两个指针,一个指向字符串的起始位置(i),另一个指向结束位置(j)。
2. 创建一个空的顺序栈用于存储中间字符。
3. 当`i < j`时:
a. 将字符`str[j]`压入栈中。
b. 移动右指针`j`向左一位。
4. 检查栈是否为空,如果为空则说明从左到右读和从右到左读是一致的,即字符串是回文。
5. 如果栈不为空,弹出栈顶元素并与当前字符`str[i]`比较,如果不相等,则不是回文。
6. 同时移动左指针`i`向右一位。
7. 当`i >= j`时,循环结束。
下面是一个简单的示例代码:
```python
def is_palindrome(s):
stack = []
i, j = 0, len(s) - 1
while i < j:
# 把右半部分压入栈中
stack.append(s[j])
j -= 1
# 如果左半部分的第一个字符比栈顶元素大,就不是回文
if i < j and s[i] != stack.pop():
return False
i += 1
return True
# 测试
print(is_palindrome("madam")) # 输出:True
```
阅读全文