python中的回文检查

时间:2018-10-19 08:04:07

标签: python python-3.x

大家好!

我正在尝试制作一个能够搜索回文的python程序。

如果我的输入仅仅是要评估的文字,那么编写代码就不会有问题

def ispalindrome(word):
    return word == word[::-1]

但是我正在尝试做更多的事情。

我想检查字符串是否“包含”回文

例如,

>>>ispalindrome('rapparee')
rappar

我应该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我将获得所有子串,按长度排序,然后对其进行迭代:

# Get a dictionary of length : [substrings]

def get_all_substrings(input_string):
    length = len(input_string)
    substrings = [input_string[i:j+1] for i in range(length) for j in range(i,length)]

    length_substring_dict = dict()
    for substring in substrings:
        dictionary_entry = length_substring_dict.get(len(substring), [])
        dictionary_entry.append(substring)
        length_substring_dict[len(substring)] = dictionary_entry

    return length_substring_dict


def ispalindrome(word):
    return word == word[::-1]

# Iterate through the substrings, starting with the longest and check for palindromes.
def has_palindrome(word):
    for length, substring_list in sorted(get_all_substrings(word).items(), reverse=True):
        for substring in substring_list:
            if ispalindrome(substring):
                return substring