zoukankan      html  css  js  c++  java
  • 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))
  • 相关阅读:
    delphi参数传递
    Delphi OO
    Delphi Excel
    Delphi Register
    西安前端交流会
    web前端开发教程系列-4
    web前端开发教程系列-3
    web前端开发教程系列-2
    web前端开发教程系列-1
    露个脸
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/9054245.html
Copyright © 2011-2022 走看看