顺序栈ADT模板简单应用算法设计:回文判断
时间: 2023-12-04 22:04:13 浏览: 170
算法设计:
1. 将字符串中的每个字符依次入栈
2. 将栈中的每个字符依次出栈,组成新的字符串
3. 判断原始字符串和新字符串是否相等,若相等则为回文,否则不是
实现代码:
```python
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
def peek(self):
if not self.is_empty():
return self.items[-1]
def size(self):
return len(self.items)
def is_palindrome(string):
stack = Stack()
for char in string:
stack.push(char)
reverse_str = ""
while not stack.is_empty():
reverse_str += stack.pop()
return string == reverse_str
```
测试代码:
```python
assert is_palindrome("") == True
assert is_palindrome("a") == True
assert is_palindrome("racecar") == True
assert is_palindrome("hello") == False
assert is_palindrome("level") == True
```
解释:
1. 第一个测试用例输入空字符串,因为是回文,所以返回True。
2. 第二个测试用例输入单个字符,因为是回文,所以返回True。
3. 第三个测试用例输入回文字符串"racecar",返回True。
4. 第四个测试用例输入非回文字符串"hello",返回False。
5. 第五个测试用例输入回文字符串"level",返回True。
阅读全文