测试列表或字符串是否为回文

时间:2013-05-16 11:50:23

标签: python algorithm

我有一个决赛即将到来,老师说他计划在问题列表中包含一个回文检查器。基本上,我需要编写两个单独的函数,一个用于测试列表是否为回文(如果是,返回True),另一个用于测试字符串。

这是我到目前为止所拥有的。这似乎给了我麻烦:

def palindrome(s)
index = 0
index = True
     while index < len(s)        
        if n[index]==n[-1-index]
        index=1
        return True
     return False

我不确定从哪里开始。

2 个答案:

答案 0 :(得分:9)

对于列表或字符串:

seq == seq[::-1]

答案 1 :(得分:1)

这是你的功能,天真的方式。适用于奇数和偶数回文,列表和字符串:

def is_palindrome(s):
    return s == s[::-1]

另一个问题是,回文只是奇数或偶数序列,还是两者兼而有之?我的意思是abccbaabcba都应该匹配,还是只匹配其中一个?

如果您只想将奇数或偶数序列视为回文,您可以添加测试:

def is_palindrome(s, t='both'):
    # only odd sequences can be palindromes
    if t=='odd':
        if len(s)%2 == 0:
            return False
        else:
            return s == s[::-1]

    # only even sequences can be palindromes
    elif t=='even':
        if len(s)%2:
            return False
        else:
            return s == s[::-1]

    # both even or odd sequences can be palindromes
    else:
        return s == s[::-1]

只有一个函数,字符串是字符列表。如果您的老师真的需要两个功能,您仍然可以创建别名:

def is_list_palindrome(l, t='both'):
    return is_palindrome(l, t)