python 递归判断回文串
PHP中文网
PHP中文网 2017-04-17 16:17:22
[Python讨论组]
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
高洛峰

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

# -*- 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()
PHPz

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号