MAXSIZE = 100
class Stack:
def __init__(self):
self.elem = [None] * MAXSIZE
self.top = -1 # 栈顶指针初始化为-1,表示空栈
def __len__(self):
return self.top + 1
def push(self, e):
if self.top == MAXSIZE - 1:
raise Exception("栈已满")
self.top += 1
self.elem[self.top] = e
def pop(self):
if self.top == -1:
raise Exception("栈已空")
e = self.elem[self.top]
self.top -= 1
return e
def get_top(self):
if self.top == -1:
raise Exception("栈已空")
return self.elem[self.top]
def is_empty(self):
return self.top == -1
def is_Stringdrome(s):
stack = Stack()
length = len(s)
# 将前半部分字符入栈
for i in range(length // 2):
stack.push(s[i])
# 如果字符串长度是奇数,跳过中间那个字符
start = (length // 2) + 1 if length % 2 != 0 else length // 2
# 后半部分依次与栈顶比较
for i in range(start, length):
if stack.is_empty() or stack.pop() != s[i]:
return False
return True
if __name__ == "__main__":
s = input("请输入字符串S1:")
if is_Stringdrome(s):
print("是回文串")
else:
print("不是回文串")
s2 = input("请输入字符串S2:")
if is_Stringdrome(s2):
print("是回文串")
else:
print("不是回文串")
s3 = input("请输入字符串S3:")
if is_Stringdrome(s3):
print("是回文串")
else:
print("不是回文串")
Python数据结构回文题
等 人表示很赞
📮评论