输入一段字符串,判断是否为“回文字符串”,如“ABCBA”,“ABBABBA”,“上海自来水来自上海”,要求代码体现出栈逻辑
时间: 2024-08-13 12:09:39 浏览: 42
判断一个字符串是否为回文字符串,可以通过将字符串的前半部分压入栈中,然后依次弹出元素并与后半部分的对应字符比较,如果所有字符都匹配,则该字符串是回文。这里给出一个使用 Python 语言和栈数据结构实现的例子:
```python
def is_palindrome(s):
# 使用列表模拟栈,因为 Python 列表可以直接操作尾部
stack = list()
length = len(s)
# 将字符串的前半部分压入栈
for i in range(length // 2):
stack.append(s[i])
# 检查后半部分是否与栈顶元素一一对应相等
for i in range(length // 2, length):
if s[i] != stack.pop(): # 如果不相等则返回 False
return False
# 如果字符串长度为奇数,最后一个元素不需要检查(因为它会被忽略)
if length % 2 == 1 and stack:
return False
# 如果所有字符都匹配,返回 True
return True
# 示例
print(is_palindrome("ABCBA")) # 输出: True
print(is_palindrome("ABBABBA")) # 输出: True
print(is_palindrome("上海自来水来自上海")) # 输出: True
```
阅读全文