回文是指正读和反读均相同的字符序列,如”abba”和”abdba”均是回文,但”good”不是回文,试写一算法利用栈判定给定的字符序列是否为回文。(提示:将一半字符入栈)
时间: 2023-10-30 19:15:21 浏览: 64
判断字符序列是否是回文
5星 · 资源好评率100%
算法思路:
首先将字符序列的一半依次入栈,然后依次取出栈中的字符与字符序列的另一半进行比较,如果相同则继续比较,如果不同则说明不是回文。
算法实现:
1. 初始化栈;
2. 将字符序列的一半依次入栈;
3. 依次取出栈中的字符与字符序列的另一半进行比较,如果相同则继续比较,如果不同则说明不是回文;
4. 如果全部比较完毕,都相同,则说明是回文。
代码实现:
```python
def is_palindrome(s):
stack = []
n = len(s)
for i in range(n//2):
stack.append(s[i])
for i in range(n//2, n):
if stack.pop() != s[i]:
return False
return True
```
测试样例:
```python
print(is_palindrome('abba')) # True
print(is_palindrome('abdba')) # True
print(is_palindrome('good')) # False
```
阅读全文