• Python3回文相关算法小结


    [本文出自天外归云的博客园]

    总结一下关于回文相关的算法:

    1. 判断字符串本身是否是回文
    2. 返回字符串中的所有子串
    3. 找到字符串中包含的所有回文
    4. 判断字符串中是否包含回文
    5. 将字符串变成一个不包含回文的字符串

    代码如下:

    # 判断字符串本身是否是回文
    def is_huiwen(str, i=0):
        # 回文至少长度为2
        if len(str) == 1:
            return False
        # 撞针法判断是否是回文字符串
        while True:
            if i >= len(str) - i:
                return True
            if str[i] != str[len(str) - i - 1]:
                return False
            i += 1
    
    
    # 返回字符串中所有的子串
    all_substr = lambda str: [str[i:i + x + 1] for x in range(len(str)) for i in range(len(str) - x)]
    
    
    # 找到字符串中包含的所有回文
    def find_all_huiwen(str, ret=[]):
        substrs = all_substr(str)
        # 遍历字符串中的所有子串并找出所有回文子串
        for i in range(len(substrs)):
            if is_huiwen(substrs[i]):
                ret.append(substrs[i])
    
    
    # 判断字符串中是否包含回文
    def contain_huiwen(str):
        substrs = all_substr(str)
        # 遍历字符串中所有子串并判断字符串中是否包含回文子串
        for i in range(len(substrs)):
            if is_huiwen(substrs[i]):
                return True
        return False
    
    
    # 将字符串变成一个没有回文的字符串
    def no_huiwen(str, ret="", i=0):
        # 从字符串的索引第0位开始到字符串索引末位结束
        while i < len(str) - 1:
            # 确保新生成的字符串不包含回文
            if not contain_huiwen(ret + str[i]):
                ret += str[i]
            # 逐位判断
            i += 1
        return ret
    
    
    if __name__ == '__main__':
        str = "abccbabc"
        find_all_huiwen(str)
        print(contain_huiwen(str))
        print(no_huiwen(str))
  • 相关阅读:
    宏与函数
    随笔
    随笔
    GS与MS之间通信
    关于function的一种常用用法
    12 应该提取的奖金是
    11 多少个互不相同且无重复数字的三位数
    Servlet.service() for servlet UserServlet threw exception java.lang.NullPointerException 空指针异常
    10 一球从100米高度自由落下的问题
    9 完数求解
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/9054245.html
Copyright © 2020-2023  润新知