📜  门| GATE-CS-2014-(Set-2) |问题 25(1)

📅  最后修改于: 2023-12-03 15:42:17.323000             🧑  作者: Mango

题目简介

该题目为2014年计算机科学领域GATE考试(Set-2)的第25题,是一道关于栈和递归的题目。

题目描述

给定一个字符串,判断该字符串是否为回文字符串(正读和倒读都一样),要求使用递归和栈两种方法分别实现。

解题思路

方法一:递归

递归的思路比较简单,即将字符串分为第一个字符和剩余的子串两部分,递归判断子串是否为回文字符串。如果子串为回文字符串,再判断第一个字符和最后一个字符是否相同。

具体实现如下:

def is_palindrome_recursion(string):
    if len(string) < 2:
        return True
    elif string[0] != string[-1]:
        return False
    else:
        return is_palindrome_recursion(string[1:-1])
方法二:栈

栈的思路也比较简单,即将字符串的每个字符入栈,然后再从栈中弹出字符,判断是否和原字符串的字符相同,相同则继续比较,不同则说明不是回文字符串。

具体实现如下:

def is_palindrome_stack(string):
    stack = []
    for char in string:
        stack.append(char)
    for char in string:
        if char != stack.pop():
            return False
    return True

总结

以上两种方法都可以实现回文字符串的判断,但是递归方法的代码比较简洁,而栈的方法则需要额外的空间来存储字符。在实际应用中,应根据具体情况选择合适的方法。