写出利用两个栈检测回文的python代码
时间: 2024-09-28 19:03:44 浏览: 34
Python 开发者常用的30个极简Python代码
当然可以。我们可以使用两个栈来检测一个字符串是否是回文。这种方法的基本思想是同时遍历输入字符串的一半,并将字符压入两个栈中。如果两个栈顶元素始终相等,则说明是回文;如果不等,则不是。
以下是Python代码实现:
```python
def is_palindrome(s):
stack1 = [] # 左向栈
stack2 = [] # 右向栈
for char in s:
if char != '': # 忽略空格和非字母数字字符
stack1.append(char)
else:
while stack2 and stack2[-1] == char: # 当右向栈非空且顶元素等于左向栈顶元素时,移除右向栈顶元素
stack2.pop()
if not stack2 or stack1[-1] != stack2[-1]: # 如果栈顶元素不匹配,返回False
return False
stack1.pop() # 移除左向栈顶部已比较过的字符
return not stack1 and not stack2 # 如果两个栈都为空,说明是回文
# 测试示例
strings = ["A man, a plan, a canal: Panama", "race a car", "level"]
for string in strings:
print(f"{string} 是回文吗?{is_palindrome(string)}")
```
阅读全文