首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试列表或字符串是否为回文

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

Stack Overflow用户
提问于 2013-05-16 19:50:23
回答 2查看 7.7K关注 0票数 4

我的期末考试快到了,老师说他计划在问题列表中加入一个回文检验器。基本上,我需要编写两个单独的函数,一个用于测试列表是否为回文类型(如果是,则返回True),另一个用于测试字符串。

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

代码语言:javascript
复制
def palindrome(s)
index = 0
index = True
     while index < len(s)        
        if n[index]==n[-1-index]
        index=1
        return True
     return False

我真的不知道下一步该怎么做。

EN

回答 2

Stack Overflow用户

发布于 2013-05-16 19:51:08

对于列表或字符串:

代码语言:javascript
复制
seq == seq[::-1]
票数 9
EN

Stack Overflow用户

发布于 2013-05-16 20:29:46

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

代码语言:javascript
复制
def is_palindrome(s):
    return s == s[::-1]

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

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

代码语言:javascript
复制
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]

只有一个函数as string是字符列表。如果你的老师真的想要两个函数,你仍然可以使用别名:

代码语言:javascript
复制
def is_list_palindrome(l, t='both'):
    return is_palindrome(l, t)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16586630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档