首页 > python 递归判断回文串

python 递归判断回文串

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该怎么写呢


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


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

# -*- 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()
【热门文章】
【热门文章】