首页 > 解决方案 > 关于回文序列的 Python 代码

问题描述

有一个字母序列是回文。现在,恰好一对随机挑选的字母相互交换。如果可能,编写一个 python 程序来确定字母的原始回文序列。def get_original_palindrome(edited_sequence):

标签: python-3.x

解决方案


def get_misplaced_indexes(w):
    misplaced_indexes = []
    for i in range(len(w)//2):
        if w[i] != w[len(w)-1-i]:
            misplaced_indexes.append(i)
    if len(misplaced_indexes) == 1:
        misplaced_indexes.append(len(w)//2)
    return misplaced_indexes

def get_one_of_original_palindrome(misplaced_indexes, w):
    ans = ""
    index1, index2 = misplaced_indexes
    for i in range(len(w)):
        if i == index1:
            ans += w[index2]
        elif i == index2:
            ans += w[index1]
        else:
            ans += w[i]
    return ans

def get_original_palindrome(w):
    if w == w[::-1]:
        return(w)
    else:
        misplaced_indexes = get_misplaced_indexes(w)
        return get_one_of_original_palindrome(misplaced_indexes, w)


print(get_original_palindrome("radar"))
print(get_original_palindrome("ardar"))
print(get_original_palindrome("rdaar"))
print(get_original_palindrome("helelh"))

推荐阅读