python 递归判断回文串

发布于 2022-09-01 21:00:16 字数 292 浏览 19 评论 0

def isPlidrom(obj):
    if 1 == len(obj):
        return True
    if obj[0] == obj[len(obj)-1]:
        return isPlidrom()
    else:
        return False

这里return isPlidrom()里面的参数该怎么写?obj此时应该从开始位置加1,末尾位置减一,如果是c的话 return isplidrom(str+1,len-2)就行了,这里python该怎么写呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你不是我要的菜∠ 2022-09-08 21:00:16

试着写了递归和非递归的算法

# -*- coding: utf-8 -*-


def isPlidromNonRecursive(inputStr):
    assert isinstance(inputStr, basestring)
    strLen = len(inputStr)
    currentStart = 0
    currentEnd = strLen - 1
    while currentStart <= currentEnd:
        if inputStr[currentStart] != inputStr[currentEnd]:
            return False
        else:
            currentStart += 1
            currentEnd -= 1
    return True

def isPlidromRecursive(inputStr):
    assert isinstance(inputStr, basestring)
    if 0 <= len(inputStr) <= 1:
        return True
    if inputStr[0] != inputStr[-1]:
        return False
    else:
        return isPlidromRecursive(inputStr[1:-1])


def test_isPlidromNonRecursive():
    assert isPlidromNonRecursive("level")
    assert isPlidromNonRecursive("noon")
    assert isPlidromNonRecursive("abcd") == False

def test_isPlidromRecursive():
    assert isPlidromRecursive("level")
    assert isPlidromRecursive("noon")
    assert isPlidromRecursive("abcd") == False

if __name__ == '__main__':
    test_isPlidromNonRecursive()
    test_isPlidromRecursive()
不语却知心 2022-09-08 21:00:16

isPlidrom(obj[1:-1]),但不建议这么写。建议再加一个函数,写成 isP(obj,from,to),如果你一定要用递归实现的话。主函数写isP(obj,0,len(obj))

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文