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("不是回文串")