我有一个决赛即将到来,老师说他计划在问题列表中包含一个回文检查器。基本上,我需要编写两个单独的函数,一个用于测试列表是否为回文(如果是,返回True),另一个用于测试字符串。
这是我到目前为止所拥有的。这似乎给了我麻烦:
def palindrome(s)
index = 0
index = True
while index < len(s)
if n[index]==n[-1-index]
index=1
return True
return False
我不确定从哪里开始。
答案 0 :(得分:9)
对于列表或字符串:
seq == seq[::-1]
答案 1 :(得分:1)
这是你的功能,天真的方式。适用于奇数和偶数回文,列表和字符串:
def is_palindrome(s):
return s == s[::-1]
另一个问题是,回文只是奇数或偶数序列,还是两者兼而有之?我的意思是abccba
和abcba
都应该匹配,还是只匹配其中一个?
如果您只想将奇数或偶数序列视为回文,您可以添加测试:
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)